ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ DMD 2.111, Π΅ΡΠ°Π»ΠΎΠ½Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π·Π° Π΅Π·ΠΈΠΊΠ° D. ΠΠΎΠ΄ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π° Π»ΠΈΡΠ΅Π½Π·ΠΈΡ BSL (Boost Software License). ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Linux, Windows, macOS ΠΈ FreeBSD.
ΠΠ·ΠΈΠΊΡΡ D ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° C/C++, ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡΠ΅ Π΅Π·ΠΈΡΠΈ. ΠΠ·ΠΈΠΊΡΡ D Π·Π°ΠΈΠΌΡΡΠ²Π° ΠΈ Π½ΡΠΊΠΎΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈΡΠ΅ Π΅Π·ΠΈΡΠΈ, ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°Π»ΠΈΡΠ½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π°: Π°ΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ, ΠΊΠΎΡΠ²Π΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅. ΠΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ ΡΠ±ΠΎΡΠ½ΠΈΠΊ Π½Π° Π±ΠΎΠΊΠ»ΡΠΊΠ°. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Π½Π° Π΅Π·ΠΈΠΊ D ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½ΡΠΊΠΎΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° C++ ΠΈ Objective-C.
ΠΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΠ΅ΡΡΠΌΠ΅ΡΠ΅ΡΠ΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 2.110, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎ-ΡΠΊΠΎΡΠΎ Π±Π΅ΡΠ΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΡΠΎ ΠΈ ΡΡΠ΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΈ. Π‘ΡΠ΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ° Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 2.111:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, Π²ΠΊΠ»ΡΡΠ²Π°Π½Π° ΡΡΠ΅Π· ΡΠ»Π°Π³Π° "-ftime-trace" Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° DMD. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ LDC Π²Π΅ΡΠ΅ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅ Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΈΠ΄Π΅ΠΎ Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° time-trace.
- Π€Π»Π°Π³ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° "-i" Π²Π΅ΡΠ΅ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° Π΅Π·ΠΈΠΊΠ° C.
- Π ΡΠ°Π±Π»ΠΎΠ½Π½ΠΈΡΠ΅ ΠΌΠΈΠΊΡΠΈΠ½ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅: mixin MyMixinTemplate!(Args) myName; // ΡΡΠ°Ρ ΡΡΠΈΠ» mixin myName = MyMixinTemplate!(Args); // Π½ΠΎΠ² ΡΡΠΈΠ»
- ΠΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ "extern(Objective-C)" Π²Π΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΈ, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ Π°ΡΡΠΈΠ±ΡΡΡΡ "@selector" Π½Π΅ Π΅ ΡΠΊΠ°Π·Π°Π½: extern(Objective-C) extern class NSObject { static NSObject alloc(); // ΠΠ΅Π½Π΅ΡΠΈΡΠ° ΡΠ΅ ΠΊΠ°ΡΠΎ "alloc" NSObject init(); // ΠΠ΅Π½Π΅ΡΠΈΡΠ° ΡΠ΅ ΠΊΠ°ΡΠΎ "init" } extern(Objective-C) class Fox : NSObject { bool fluffy; @property bool isFluffy() => fluffy; // "isFluffy" @property void isFluffy(bool value) { fluffy = value; } // "setFluffy:" void yip(int a) @selector("bark:") { // "bark:" // β¦ } void doSomething(int a, int b, int c) { // "doSomething:b:c:" // β¦ } }
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ ΠΈΠ·ΡΠ°Π·ΡΡ Π·Π° placement "new" Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π±Π΅Π· GC). struct S { float d; int i; char c; } β¦ S s; S* p = new (s) S(3.14, 42, βXβ); // ΠΏΠ»Π΅ΠΉΡ Π½ΠΎΠ² ΠΎΠ±Π΅ΠΊΡ Π² s
- ΠΠΎΠ²ΠΎΡΠΎ ΠΊΠ»ΡΡΠΎΠ²ΠΎ ΡΠ»ΠΎΠ²ΠΎ "__rvalue", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° move-ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°ΡΠ°. ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ "move" ΠΈ "forward".
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ΡΡ "-preview=safer", ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΉΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΏΡΠΈΠ»Π°Π³Π°Π½ΠΈ Π² ΠΊΠΎΠ΄Π° "@safe", ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π·Π° ΡΠ΅Π»ΠΈΡ ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ ΡΡΡΠ΄Π½ΠΎΠ²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΠΈΡΠ΅ ΡΠ°ΡΡΠΈ (ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ "@system") Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ Safer D.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΊΠ»Π°ΡΠΎΠ²Π΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ "ref" ΠΈ "auto ref", ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΈ, Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ ΠΈ ΡΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ "auto ref" ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΠ°ΠΌΠΎ Π·Π°Π΅Π΄Π½ΠΎ.
- ΠΠΊΠ»ΡΡΠ΅Π½ Π΅ ΠΈΠ·Ρ ΠΎΠ΄ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π·Π° Π½ΡΠΊΠΎΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΡΡΠ°ΡΡΡ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ. Π‘ΡΠ΅Π΄ ΡΡΡ Π·Π°ΠΌΡΠ½Π° Π½Π° "delete" Ρ "destroy", "ΠΏΡΠΎΡΠΏΠΈΠ²Π°Π½Π΅" Π² ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ½ΠΈ "case", ΡΠ°ΠΌΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
- Π‘ΡΠΊΡΠ°ΡΠ΅Π½ΠΈΡΠΌ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΈ: struct Number { int x; void vf(int); this(int x) => vf(x); this(float x) => this(cast(int) x); }
- Π runtime ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Windows-Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ Π·Π° BCrypt.
- Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠΌΠΏΠΎΡΡ Π½Π° ODBC 4.0 ΠΈ ΡΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Unicode, ΡΠΈΡΡΠΎ Π²Π΅ΡΡΠΈΡ Π±Π΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° Π΄ΠΎ 16.
- ΠΠΎΠ² API Π·Π° "std.sumtype", ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ Π° ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ "has!T", "get!T" ΠΈ "tryGet!T".
- Π ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ dub Π΅ ΠΏΠΎΠΏΡΠ°Π²Π΅Π½Π° Π³ΡΠ΅ΡΠΊΠ°ΡΠ° Ρ "cImportPaths".
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠ΅Π΄ΠΈΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° D:
Π ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΈΠ³ΡΠΈ (GameDev) ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π²ΠΈΠΆΠΊΠ°: HipremeEngine β ΠΊΡΠΎΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ²Π΅Π½ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π΄Π΅ΡΠΊΡΠΎΠΏ ΡΠΈΡΡΠ΅ΠΌΠΈ Windows/Linux/macOS ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° iOS/Android/Xbox/WebAssembly/PS Vita. ΠΡΡΠ³ ΠΏΡΠΎΠ΅ΠΊΡ β Dagon, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° 3D-Π΄Π²ΠΈΠΆΠΊΠ° Ρ ΠΎΠ±ΡΠΈΡΠ½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π³ΡΠ°ΡΠΈΠΊΠ°.
Π ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΎΡΠ²Π΅Π½ OpenGL, ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΡΠΎ SDL (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²Π΅ΡΡΠΈΠΈ 3 ΠΈ 2) ΠΈ Sokol. Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅/ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅) ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π² ΠΏΠ°ΠΊΠ΅ΡΠ° gamut, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈ. ΠΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΊΠ°ΠΊΡΠΎ Π½Π° ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ PNG, JPEG ΠΈ BMP, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΠΏΠΎ-ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ JPEG-XL, QOI ΠΈ QOIX.
ΠΠ° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ (GUI) Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° Π½ΠΎΠ²Π° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ gID, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° GObject, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° GTK 3/4, Arrow/Parquet ΠΈ Adw. ΠΡΠΈΠΌΠ΅ΡΠΈ ΠΈ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Fluid, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΈΠ³ΡΠΈ, ΡΡΠ°Π²Π° Π²ΡΠ΅ ΠΏΠΎ-ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½.
Π ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° ΡΠ΅Π± ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° RISC-V Π±Π΅ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Serverino. Π’ΠΎΠ·ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ΅Π½ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π± ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π±Π΅Π· Π΄ΡΡΠ³ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»Π°Π±ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΡΠΊΠΎΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ ΠΌΠ°Π»ΡΠΊ ΠΎΠ±Π΅ΠΌ ΠΏΠ°ΠΌΠ΅Ρ.
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π° ΠΊΡΠΊΠΎΠ»ΡΠ½Π° 2D Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ β Inochi2D. Π‘ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π±ΡΡ
Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ runtime, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π±Π΅Π· Π±ΠΎΠΊΠ»ΡΠΊΠΎΠ·Π°Π΄Π΅ΠΉΡΡΠ²Π°Ρ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
