Mettle 0.15.0 ΠΈ 0.15.1


3

31 юли бяха ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈ вСрсии 0.15.0 ΠΈ 0.15.1 Mettle β€” Π΅Π·ΠΈΠΊ Π½Π° систСмното ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ с статична типизация:

  • Нативна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0).

  • БобствСн Π»ΠΈΠ½ΠΊΠ΅Ρ€ Π·Π° Windows PE.

  • БобствСн ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ Π½Π° Π½ΠΈΠ²ΠΎ ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄:

    • Π‘Π΅Π· външни Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ.
    • Π’ΠΎΡ‡ΠΊΠΈ Π½Π° спиранС, ΡΡ‚ΡŠΠΏΠΊΠΎΠ² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈ писанС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Ρ‡Ρ€Π΅Π· β€”debug-hooks.
    • Π‘Π΅Π· gdb, PDB ΠΈ DWARF.
  • Π‘Π΅ΠΊΠ΅Π½Π΄ CUDA.

  • Π‘Π΅Π· LLVM, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина ΠΈ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ.

  • ИзпълнСниС Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ @test сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Π½Π° компилятора с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° mettle test, Π±Π΅Π· Π΄Π° сС създава Π±ΠΈΠ½Π°Ρ€Π΅Π½ Ρ„Π°ΠΉΠ». ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° mettle trace ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° Π΅Π΄Π½Π° функция ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ° слСдСнС Π½Π° стойноститС. ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€”pgo ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° функция main() Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π° ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ‚Π΅ чСстоти Π½Π° извиквания ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° заимстванията (borrow checker):

    ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΠ½Π°Π»ΠΎΠ³ Π½Π° Rust
    Use-after-free (Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ)free(p); p[0]собствСност / Drop
    Π”Π²ΠΎΠ΅Π½ freefree(p); free(p)собствСност
    Use-after-free ΠΏΡ€Π΅Π· алиасq = p; free(q); p[0]сСматика Π½Π° прСмСстванС
    Use-after-free ΠΏΡ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ (ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΎ)consume(p); p[0] ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ consume освобоТдава pсСматика Π½Π° прСмСстванС
    Π—Π°Π΅ΠΌΠ°Π½Π΅, ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ‰ΠΎ извън стСка{ var x; g = &x[0]; } use(g)ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΈ (β€˜a)
    Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» слСд reallocq = &buf[i]; realloc(buf,..); q[0]нСдСйствитСлност Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
    Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» слСд freeq = &buf[i]; free(buf); q[0]ΠΏΠΎΡ‚ΡŠΠ²Π°Ρ‰Π° рСфСрСнция
    Π’Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° адрСс Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ стСкreturn &localfn() -> &T Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ‚Π°
    Π˜Π·Ρ‚Π΅ΠΊΠ»Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (няма собствСник ΠΏΠΎ ΠΊΠ°ΠΊΡŠΠ²Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ ΠΏΡŠΡ‚)var p = malloc(n); return 0(Rust освобоТдава Ρ‡Ρ€Π΅Π· Drop)

ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libmtlc:

  • БобствСн ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ (IR).
  • ΠšΠ»Π°ΡΠΈΡ‡Π΅ΡΠΊΠΈ ΠΈ GNN ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° ΠΊΠΎΠ΄.
  • Нативна гСнСрация Π½Π° ΠΊΠΎΠ΄ (x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0)).
  • Нативно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ са написани ΠΎΡ‚ програмист ΠΎΡ‚ ΠšΠ΅ΠΉΠΏΡ‚Π°ΡƒΠ½ suidvandiewereld Π½Π° Π΅Π·ΠΈΠΊ C (стандарт C99) ΠΈ сС разпространяват ΠΏΠΎΠ΄ лицСнзия Apache-2.0.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster