āĻāĻ°āĻžāĻāĻ˛ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋ
GraalVM
- Node.js 12.10.0 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- āĻ
-āĻŽāĻžāĻ¨āĻ āĻŦā§āĻļā§āĻŦāĻŋāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻ
āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻšāĻ¯āĻŧ:
āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ (globalThis āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤, js.global-āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§), āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž (js.performance), āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻŦāĻ printErr (js.print); - āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ Promise.allSettled āĻāĻŦāĻ nullish coalescing āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ, āĻ¯āĻž ECMAScript 2020 āĻŽā§āĻĄā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ (â-js.ecmascript-version=2020â);
- āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž ICU4J āĻĨā§āĻā§ 64.2, ASM āĻĨā§āĻā§ 7.1āĨ¤
- āĻ¸ā§āĻāĻžāĻŦ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ gc.{enable,disable,isenabled}, āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ charmap_build, sys.hexversion āĻāĻŦāĻ _lzma;
- āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻĒāĻžāĻāĻĨāĻ¨ 3.7.8 āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ;
- NumPy 1.16.4 āĻāĻŦāĻ āĻĒāĻžāĻ¨ā§āĻĄāĻžāĻ¸ 0.25.0 āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- āĻāĻžāĻāĻŽāĻāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- socket.socket āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻāĻ¨āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ âgraalpython -m http.serverâ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻāĻŦāĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž (TLS āĻāĻžāĻĄāĻŧāĻž) http āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻ˛ā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ;
- pandas.DataFrame āĻ
āĻŦāĻā§āĻā§āĻāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
bytes.startswith-āĻ tuples āĻāĻ° āĻā§āĻ˛ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖ,
āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ā§āĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ° āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°āĻž āĻāĻŦāĻ āĻ āĻāĻŋāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ dict.__contains__ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°; - ast.PyCF_ONLY_AST āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž
āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻ¯ā§ pytest āĻāĻžāĻ āĻāĻ°ā§; - āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻĒāĻŋāĻāĻĒāĻŋ 498 (āĻ˛āĻŋāĻāĻžāĻ°ā§āĻ˛ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ˛ā§āĻļāĻ¨); -
āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ "--python.EmulateJython" āĻĒāĻ¤āĻžāĻāĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻŽā§āĻĒā§āĻ°ā§āĻ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ JVM āĻā§āĻ˛āĻžāĻ¸ āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ Python āĻā§āĻĄ āĻĨā§āĻā§ JVM āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽāĻā§āĻ˛āĻŋ āĻ§āĻ°āĻ¤ā§; - āĻāĻ¨ā§āĻ¨āĻ¤ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž, āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻā§āĻ¯āĻžāĻļāĻŋāĻ,
JVM āĻā§āĻĄ āĻĨā§āĻā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻ āĻŦāĻā§āĻā§āĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĨ¤ āĻĒāĻžāĻāĻĨāĻ¨ āĻā§āĻĄ āĻāĻŦāĻ āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ āĻāĻ¨ā§āĻ¨āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ (llvm-āĻāĻ° āĻāĻĒāĻ°ā§ āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻŦā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻŦāĻŋāĻāĻā§āĻĄ llvm JIT āĻ¸āĻāĻāĻ˛āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ GraalVM-āĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§)āĨ¤
- āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻ¤ā§, āĻŦāĻŋāĻ˛ā§āĻ-āĻāĻ¨ LLVM āĻā§āĻ˛āĻāĻŋāĻ āĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻ¨ā§āĻāĻŋāĻ āĻā§āĻĄ āĻāĻŦāĻ āĻŦāĻŋāĻāĻā§āĻĄ āĻāĻāĻ¯āĻŧāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛ āĻ¯ā§ āĻāĻ°āĻ āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻŦāĻžāĻā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ˛āĻŋāĻā§āĻāĻŋāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻĻā§āĻ° āĻāĻ°ā§;
- TruffleRuby-āĻ āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ˛āĻžāĻĻāĻž LLVM āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨;
- TruffleRuby-āĻ C++ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ° libc++ āĻāĻŦāĻ libc++ abi āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ;
- āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ EPL 2.0/GPL 2.0/LGPL 2.1, āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ JRuby-āĻāĻ° āĻŽāĻ¤ā§āĻ;
- GC.stat-āĻ āĻāĻā§āĻāĻŋāĻ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- āĻāĻāĻāĻŋ āĻŽā§āĻĄāĻŧāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛#āĻ˛ā§āĻĄ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻŦāĻ :chdir-āĻāĻ° āĻ¸āĻžāĻĨā§ Kernel#spawn āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- rb_str_drop_bytes āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻžāĻ°āĻŖ OpenSSL āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§;
- āĻ°ā§āĻ˛ 6-āĻ āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§āĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻŋ-āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ°āĻ¤ā§āĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻāĻ°āĻāĻ-āĻāĻ° āĻŽāĻ¤ā§ āĻĒāĻ¤āĻžāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ;
- āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻŽā§āĻŽāĻ°āĻŋ āĻāĻ°āĻ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§.
- R 3.6.1 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§;
- LLVM-āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¨ā§āĻāĻŋāĻ R āĻĒā§āĻ¯āĻžāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, FastR āĻā§ GraalVM-āĻāĻ° āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ LLVM āĻā§āĻ˛āĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¨ā§āĻāĻŋāĻ āĻā§āĻĄ āĻāĻŦāĻ LLVM āĻŦāĻŋāĻāĻā§āĻĄ āĻāĻāĻ¯āĻŧāĻ āĻĨāĻžāĻāĻŦā§āĨ¤
āĻĒā§āĻ°āĻŋ-āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋāĻ āĻāĻāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
FastR āĻ˛ā§āĻĄ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻ¨ā§āĻāĻŋāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ "--R.BackEnd=llvm" āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ˛ā§ āĻšāĻ˛ā§, āĻŦāĻŋāĻāĻā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ LLVM āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄ "--R.BackEndLLVM=pkg1,pkg2" āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§ āĻāĻŋāĻā§ R āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻā§ āĻŦā§āĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ā§, āĻāĻĒāĻ¨āĻŋ fastr.setToolchain("āĻ¨ā§āĻāĻŋāĻ") āĻāĻ˛ āĻāĻ°ā§ āĻŦāĻž $FASTR_HOME/etc/Makeconf āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¨āĻŋāĻā§ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨; - āĻāĻ āĻ°āĻŋāĻ˛āĻŋāĻā§, GCC āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻāĻžāĻĄāĻŧāĻžāĻ āĻĢāĻžāĻ¸ā§āĻāĻāĻ° āĻļāĻŋāĻĒ;
- āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§ āĻŽā§āĻŽāĻ°āĻŋ āĻ˛āĻŋāĻ;
- āĻŦāĻĄāĻŧ āĻā§āĻā§āĻāĻ° (>1GB) āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§āĻĨāĻŋāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž;
- grepRaw āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĨāĻŋāĻ°=T āĻāĻ° āĻāĻ¨ā§āĻ¯āĨ¤
āĻāĻ¤ā§āĻ¸: opennet.ru