์ค๋ผํด ํ์ฌ
๊ทธ๋VM
- Node.js 12.10.0๊ณผ์ ํธํ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- ๋นํ์ค ์ ์ญ ์์ฑ ๋ฐ ํจ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ต๋๋ค.
์ ์ญ(globalThis๋ก ๋์ฒด, js.global-property๋ฅผ ๋ฐํํ๋๋ก ์ค์ ), ์ฑ๋ฅ(js.performance), print ๋ฐ printErr(js.print); - ECMAScript 2020 ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋ Promise.allSettled ๋ฐ nullish ํตํฉ ์ ์์ ๊ตฌํํ์ต๋๋ค(โ-js.ecmascript-version=2020โ).
- ์ข ์์ฑ ICU4J๋ฅผ 64.2๋ก, ASM์ 7.1๋ก ์ ๋ฐ์ดํธํ์ต๋๋ค.
- gc.{enable,disable,isenabled} ์คํ ์ ์ถ๊ฐํ๊ณ charmap_build, sys.hexversion ๋ฐ _lzma๋ฅผ ๊ตฌํํ์ต๋๋ค.
- Python 3.7.8 ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
- NumPy 1.16.4 ๋ฐ Pandas 0.25.0์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ะะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ timeit;
- ์์ผ.socket์ "graalpython -m http.server"๋ฅผ ์คํํ๊ณ ์ํธํ๋์ง ์์(TLS ์์ด) http ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ ์ ์๋ ์ํ๊ฐ ๋์์ต๋๋ค.
- pandas.DataFrame ๊ฐ์ฒด ํ์์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
bytes.startswith์ ํํ ์ฒ๋ฆฌ๊ฐ ์๋ชป๋์์ต๋๋ค.
๋ฐ๋ณต์์ ๊ตฌ์กฐ ๋ถํด ํ ๋น ๋ฐ ์ฌ์ ์ ๋ํ dict.__contains__ ์ฌ์ฉ; - ast.PyCF_ONLY_AST์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
ํ์ฉ ๋ pytest๊ฐ ์๋ํ๋์ง ํ์ธํ์ธ์. - ์ถ๊ฐ๋จ
์ง์ PEP 498(๋ฆฌํฐ๋ด์ ๋ฌธ์์ด ๋ณด๊ฐ); -
๊ตฌํ ์ผ๋ฐ Python ๊ฐ์ ธ์ค๊ธฐ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ JVM ํด๋์ค๋ฅผ ๊ฐ์ ธ์ค๊ณ Python ์ฝ๋์์ JVM ์์ธ๋ฅผ ํฌ์ฐฉํ๋ "--python.EmulateJython" ํ๋๊ทธ - ะฃะปัััะตะฝะฐ ะฟัะพะธะทะฒะพะดะธัะตะปัะฝะพััั ะฟะฐััะตัะฐ, ะบะตัะธัะพะฒะฐะฝะธั ะธัะบะปััะตะฝะธะน,
JVM ์ฝ๋์์ Python ๊ฐ์ฒด์ ์ก์ธ์คํฉ๋๋ค. Python ์ฝ๋ ๋ฐ ๊ธฐ๋ณธ ํ์ฅ์ ๋ํ ์ฑ๋ฅ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ํฅ์๋์์ต๋๋ค(llvm ์์์ ๊ธฐ๋ณธ ํ์ฅ์ ์คํํ๋ฉด ๋นํธ์ฝ๋ llvm์ด JIT ์ปดํ์ผ์ ์ํด GraalVM์ ์ ๋ฌ๋จ์ ์๋ฏธํจ).
- ๊ธฐ๋ณธ ํ์ฅ์ ์ปดํ์ผํ๊ธฐ ์ํด ์ด์ ๋ด์ฅ๋ LLVM ํดํท์ด ์ฌ์ฉ๋์ด ๊ธฐ๋ณธ ์ฝ๋์ ๋นํธ์ฝ๋๋ฅผ ๋ชจ๋ ์์ฑํฉ๋๋ค. ์ด๋ ๋ ๋ง์ ๊ธฐ๋ณธ ํ์ฅ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํ์ผ๋์ด ๋๋ถ๋ถ์ ์ฐ๊ฒฐ ๋ฌธ์ ๋ฅผ ์ ๊ฑฐํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
- TruffleRuby์ ๊ธฐ๋ณธ ํ์ฅ์ ์ค์นํ๊ธฐ ์ํ ๋ณ๋์ LLVM ์ค์น;
- TruffleRuby์ C++ ํ์ฅ์ ์ค์นํ๋ ๋ฐ ๋ ์ด์ libc++ ๋ฐ libc++abi๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค.
- ์ต์ JRuby์ ๋์ผํ๊ฒ EPL 2.0/GPL 2.0/LGPL 2.1๋ก ๋ผ์ด์ผ์ค๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
- GC.stat์ ์ ํ์ ์ธ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ํผ๋ฅผ ์ฌ์ฉํ์ฌ Kernel#load ๋ฉ์๋๋ฅผ ๊ตฌํํ๊ณ :chdir์ ์ฌ์ฉํ์ฌ Kernel#spawn์ ๊ตฌํํ์ต๋๋ค.
- rb_str_drop_bytes๋ฅผ ์ถ๊ฐํ๋๋ฐ, ์ด๋ OpenSSL์ด ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ์ข์ต๋๋ค.
- Rails 6์ ์๋ก์ด ๋ ์ผ์ ํ์ํ ์ฌ์ ์ค์น๋ gem์ ํ์ฅ์ด ํฌํจ๋์์ต๋๋ค.
- ๊ธฐ๋ณธ ํ์ฅ์ ์ปดํ์ผํ๋ ค๋ฉด MRI์์์ ๊ฐ์ด ํ๋๊ทธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ด๋ฃจ์ด์ก์ผ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๊ฐ์ํ์ต๋๋ค.
- R 3.6.1๊ณผ์ ํธํ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
- LLVM ๊ธฐ๋ฐ ๊ธฐ๋ณธ ํ์ฅ ์คํ์ ๋ํ ์๋น ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ๊ธฐ๋ณธ R ํจํค์ง๋ฅผ ๋น๋ํ ๋ FastR์ GraalVM์ ๋ด์ฅ LLVM ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฒฐ๊ณผ ๋ฐ์ด๋๋ฆฌ ํ์ผ์๋ ๋ค์ดํฐ๋ธ ์ฝ๋์ LLVM ๋นํธ์ฝ๋๊ฐ ๋ชจ๋ ํฌํจ๋ฉ๋๋ค.
์ฌ์ ์ค์น๋ ํจํค์ง๋ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ตฌ์ถ๋ฉ๋๋ค.
FastR์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐ๋ณธ ํ์ฅ ์ฝ๋๋ฅผ ๋ก๋ํ๊ณ ์คํํ์ง๋ง "--R.BackEnd=llvm" ์ต์ ์ผ๋ก ์คํํ๋ฉด ๋นํธ์ฝ๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. LLVM ๋ฐฑ์๋๋ "--R.BackEndLLVM=pkg1,pkg2"๋ฅผ ์ง์ ํ์ฌ ์ผ๋ถ R ํจํค์ง์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ํจํค์ง ์ค์น์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ fastr.setToolchain("native")์ ํธ์ถํ๊ฑฐ๋ $FASTR_HOME/etc/Makeconf ํ์ผ์ ์๋์ผ๋ก ํธ์งํ์ฌ ๋ชจ๋ ๊ฒ์ ๋๋๋ฆด ์ ์์ต๋๋ค. - ์ด๋ฒ ๋ฆด๋ฆฌ์ค์์ FastR์ GCC ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด ์ ๊ณต๋ฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์์ ํ์ต๋๋ค.
- ํฐ ๋ฒกํฐ(>1GB)๋ก ์์ ํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์์ ๋์์ต๋๋ค.
- grepRaw๋ฅผ ๊ตฌํํ์ง๋ง,fixed=T์๋ง ํด๋น๋ฉ๋๋ค.
์ถ์ฒ : opennet.ru