Uppdatering 19.3.0 av GraalVM och implementationer av Python, JavaScript, Ruby och R baserade pÄ den.

Oracle publicerade utgĂ„van av den universella virtuella maskinen GraalVM 19.3.0, som stöder körning av applikationer pĂ„ JavaScript (Node.js), Python, Ruby, R, alla sprĂ„k för JVM (Java, Scala, Clojure, Kotlin) och sprĂ„k som kan kompilera till LLVM bitkod (C, C++, Rust). Version 19.3 kategoriseras som en lĂ„ngsiktig stödversion (LTS) och Ă€r anmĂ€rkningsvĂ€rd stödet JDK 11, inklusive möjligheten att kompilera Java-kod till körbara filer (GraalVM Native Image). Projektkoden sprids Ă€r licensierad under GPLv2. Samtidigt slĂ€pptes nya versioner av GraalVM-implementeringarna av sprĂ„ken Python, JavaScript, Ruby och R — GraalPython, GraalJS, TruffleRuby och FastR.

GraalVM skydd mot DDoS-attacker en JIT-kompilator som kan köras on-the-fly i JVM med kod av alla skriptsprÄk, inklusive JavaScript, Ruby, Python och R, och möjliggör körning av nativ kod i JVM som har konverterats till LLVM bitkod. De verktyg som tillhandahÄlls av GraalVM inkluderar sprÄkupphörende debugger, profileringssystem och minnesanalysator. GraalVM möjliggör skapandet av kombinerade applikationer med komponenter pÄ olika sprÄk, vilket gör det möjligt att komma Ät objekt och arrayer frÄn kod pÄ andra sprÄk. För sprÄk baserade pÄ JVM finns det att möjlighet att skapa körbara filer kompilera till maskinkod som kan köras direkt med minimalt minnesutnyttjande (minneshantering och trÄdar hanteras genom att ansluta till ramverket Substrate VM).

Ändringarna i GraalJS:

  • SĂ€kerstĂ€lld kompatibilitet med Node.js 12.10.0;
  • Ej-standard globala egenskaper och funktioner Ă€r avstĂ€ngda som standard:
    global (ersatt med globalThis, med en instÀllning för att ÄtergÄ till js.global-property), performance (js.performance), print och printErr (js.print);
  • Promise.allSettled och nullish coalescing proposal har implementerats, och som Ă€r tillgĂ€ngliga i ECMAScript 2020-lĂ€get ("—js.ecmascript-version=2020");
  • Beroenden ICU4J har uppdaterats till 64.2, ASM till 7.1.

Ändringar i GraalPython:

  • Stubbar gc.{enable,disable,isenabled} har lagts till, samt charmap_build, sys.hexversion och _lzma har implementerats;
  • Standardbiblioteket Python 3.7.8 har uppdaterats;
  • Stöd för NumPy 1.16.4 och Pandas 0.25.0 har lagts till;
  • stöd för timeit har lagts till;
  • socket.socket har nĂ„tt en punkt dĂ€r "graalpython -m http.server" kan köras och okrypterade (utan TLS) http-resurser kan laddas;
  • Problem relaterade till utdata av pandas.DataFrame-objekt har Ă„tgĂ€rdats,
    felaktig behandling av tupler i bytes.startswith,
    destrukturerande tilldelning av iteratorer och anvÀndning av dict.__contains__ för ordböcker har ÄtgÀrdats;
  • Stöd för ast.PyCF_ONLY_AST har lagts till, vilket gjorde det möjligt att sĂ€kerstĂ€lla driften av pytest;
  • Tillagd stöd för PEP 498 (strĂ€nginterpolering i litteraler);
  • Implementerad flaggan ‘—python.EmulateJython’ för att importera JVM-klasser med vanlig Python-syntax och fĂ„nga JVM-undantag frĂ„n Python-kod;
  • Prestandan hos parsern, cache av undantag,
    Ätkomst till Python-objekt frÄn JVM-kod har förbÀttrats. Prestandatestresultaten för Python-kod och inhemska tillÀgg har förbÀttrats (exekvering av inhemska tillÀgg ovanpÄ llvm innebÀr att llvm-bitkoden skickas till GraalVM för JIT-kompilering).

Ändringar i TruffleRuby:

  • Den inbyggda LLVM-verktygslĂ„dan anvĂ€nds nu för kompilering av inhemska tillĂ€gg, som skapar bĂ„de inhemsk kod och bitkod. Det betyder att fler inhemska tillĂ€gg nu ska kunna kompileras direkt, vilket löser de flesta problem som Ă€r relaterade till lĂ€nkning;
  • Separat installation av LLVM för installation av inhemska tillĂ€gg i TruffleRuby;
  • För att installera C++ tillĂ€gg pĂ„ TruffleRuby krĂ€vs nu ingen installation av libc++ och libc++abi;
  • Licensen har uppdaterats till EPL 2.0/GPL 2.0/LGPL 2.1, liksom i det senaste JRuby;
  • Stöd för valfria argument i GC.stat har lagts till;
  • Metoden Kernel#load med wrapper och Kernel#spawn med :chdir har implementerats;
  • rb_str_drop_bytes har lagts till, sĂ€rskilt eftersom den anvĂ€nds av OpenSSL;
  • Förinstallerade gem-tillĂ€gg som behövs för rails new i Rails 6 inkluderas;
  • Flaggor har anvĂ€nts för kompilering av inhemska tillĂ€gg, precis som i MRI;
  • Prestandaoptimeringar har genomförts och minnesanvĂ€ndningen har minskats.

Ändringar i FastR:

  • Kompatibilitet med R 3.6.1 har sĂ€kerstĂ€llts;
  • Förhandsstöd för exekvering av inhemska tillĂ€gg baserat pĂ„ LLVM har lagts till. Vid byggnation av inhemska R-paket Ă€r FastR konfigurerat för att anvĂ€nda den inbyggda LLVM-verktygslĂ„dan i GraalVM. De resulterande binĂ€rfilerna kommer att innehĂ„lla bĂ„de inhemsk kod och LLVM-bitkod.

    Förinstallerade paket har ocksÄ byggts pÄ detta sÀtt.
    FastR laddar och kör inhemsk kod av tillĂ€gg som standard, men nĂ€r det körs med alternativet ‘—R.BackEnd=llvm’ kommer bitkod att anvĂ€ndas. LLVM-backend kan selektivt anvĂ€ndas för vissa R-paket genom att ange ‘—R.BackEndLLVM=pkg1,pkg2’. Vid problem med installation av paket kan man Ă„tergĂ„ genom att anropa fastr.setToolchain(‘native’) eller manuellt redigera filen $FASTR_HOME/etc/Makeconf;

  • I denna version levereras FastR utan GCC-runtimebibliotek;
  • Minne lĂ€ckor har Ă„tgĂ€rdats;
  • Problem med stora vektorer (>1GB) har Ă„tgĂ€rdats;
  • grepRaw har implementerats, men endast för fixed=T.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster