บริษัทออราเคิล
GraalVM
- รับรองความเข้ากันได้กับ Node.js 12.10.0
- คุณสมบัติและฟังก์ชันส่วนกลางที่ไม่ได้มาตรฐานจะถูกปิดใช้งานตามค่าเริ่มต้น:
global (แทนที่ด้วย globalThis การตั้งค่า js.global-property เพื่อส่งคืน) ประสิทธิภาพ (js.Performance) print และ printErr (js.print); - ข้อเสนอ Promise.allSettled และข้อเสนอการรวมเป็นโมฆะที่ใช้งาน ซึ่งพร้อมใช้งานในโหมด ECMAScript 2020 (“-js.ecmascript-version=2020”);
- อัปเดตการอ้างอิง ICU4J เป็น 64.2, ASM เป็น 7.1
- เพิ่ม stubs gc.{enable,disable,isenabled}, ใช้ charmap_build, sys.hexversion และ _lzma;
- อัปเดตไลบรารีมาตรฐาน Python 3.7.8;
- เพิ่มการรองรับสำหรับ NumPy 1.16.4 และ Pandas 0.25.0;
- เพิ่มการสนับสนุน timeit;
- socket.socket ถูกนำเข้าสู่สถานะที่อนุญาตให้คุณเรียกใช้ "graalpython -m http.server" และโหลดทรัพยากร http ที่ไม่ได้เข้ารหัส (ไม่มี TLS)
- แก้ไขปัญหาเกี่ยวกับการแสดงวัตถุ pandas.DataFrame
การประมวลผลสิ่งอันดับไม่ถูกต้องใน bytes.startswith
การทำลายการกำหนดโครงสร้างของตัววนซ้ำและการใช้ dict.__contains__ สำหรับพจนานุกรม - เพิ่มการรองรับ ast.PyCF_ONLY_AST ซึ่ง
อนุญาต ตรวจสอบให้แน่ใจว่า pytest ใช้งานได้ - เพิ่ม
สนับสนุน PEP 498 (การแก้ไขสตริงเป็นตัวอักษร); -
ดำเนินการแล้ว การตั้งค่าสถานะ “--python.EmulateJython” เพื่อนำเข้าคลาส JVM โดยใช้ไวยากรณ์การนำเข้า Python ปกติ และตรวจจับข้อยกเว้น JVM จากโค้ด Python - ปรับปรุงประสิทธิภาพการแยกวิเคราะห์ แคชข้อยกเว้น
การเข้าถึงวัตถุ Python จากรหัส JVM ปรับปรุงผลลัพธ์ในการทดสอบประสิทธิภาพของโค้ด python และส่วนขยายดั้งเดิม (การเรียกใช้ส่วนขยายดั้งเดิมที่ด้านบนของ llvm หมายความว่าบิตโค้ด llvm ถูกส่งไปยัง GraalVM สำหรับการคอมไพล์ JIT)
- เพื่อคอมไพล์ส่วนขยายเนทิฟ ตอนนี้ใช้เครื่องมือ LLVM ในตัว ซึ่งสร้างทั้งโค้ดเนทีฟและบิตโค้ด ซึ่งหมายความว่าควรรวบรวมส่วนขยายเนทิฟจำนวนมากขึ้นทันที เพื่อขจัดปัญหาการเชื่อมโยงส่วนใหญ่
- แยกการติดตั้ง LLVM สำหรับการติดตั้งส่วนขยายดั้งเดิมใน TruffleRuby
- การติดตั้งส่วนขยาย C++ บน TruffleRuby ไม่จำเป็นต้องติดตั้ง libc++ และ libc++abi อีกต่อไป
- อัปเดตใบอนุญาตเป็น EPL 2.0/GPL 2.0/LGPL 2.1 เช่นเดียวกับ JRuby ล่าสุด
- เพิ่มการรองรับอาร์กิวเมนต์เสริมสำหรับ GC.stat;
- นำเมธอด Kernel#load ไปใช้ด้วย wrapper และ Kernel#spawn ด้วย :chdir;
- เพิ่ม rb_str_drop_bytes ซึ่งดีมากเพราะ OpenSSL ใช้มัน
- รวมส่วนขยายของอัญมณีที่ติดตั้งไว้ล่วงหน้าซึ่งจำเป็นสำหรับรางใหม่ใน Rails 6;
- ในการรวบรวมส่วนขยายดั้งเดิม จะใช้แฟล็ก เช่นเดียวกับใน MRI
- มีการปรับปรุงประสิทธิภาพและการใช้หน่วยความจำลดลง
- รับรองความเข้ากันได้กับ R 3.6.1
- เพิ่มการสนับสนุนเบื้องต้นสำหรับการเรียกใช้ส่วนขยายเนทิฟตาม LLVM เมื่อสร้างแพ็คเกจ R ดั้งเดิม FastR จะได้รับการกำหนดค่าให้ใช้เครื่องมือ LLVM ในตัวของ GraalVM ไฟล์ไบนารี่ที่ได้จะมีทั้งโค้ดเนทีฟและบิตโค้ด LLVM
แพ็คเกจที่ติดตั้งไว้ล่วงหน้าก็ถูกสร้างขึ้นในลักษณะนี้เช่นกัน
FastR จะโหลดและรันโค้ดส่วนขยายเนทิฟตามค่าเริ่มต้น แต่เมื่อเปิดใช้งานด้วยตัวเลือก "--R.BackEnd=llvm" บิตโค้ดจะถูกนำมาใช้ แบ็กเอนด์ LLVM สามารถเลือกใช้สำหรับแพ็คเกจ R บางตัวได้โดยระบุ "--R.BackEndLLVM=pkg1,pkg2" หากคุณประสบปัญหาในการติดตั้งแพ็คเกจ คุณสามารถคืนค่าทุกอย่างกลับคืนมาได้ด้วยการเรียก fastr.setToolchain("native") หรือแก้ไขไฟล์ $FASTR_HOME/etc/Makeconf ด้วยตนเอง - ในรุ่นนี้ FastR จัดส่งโดยไม่มีไลบรารีรันไทม์ GCC
- แก้ไขหน่วยความจำรั่ว;
- แก้ไขปัญหาเมื่อทำงานกับเวกเตอร์ขนาดใหญ่ (>1GB)
- ใช้งาน grepRaw แต่สำหรับ fix=T เท่านั้น
ที่มา: opennet.ru