Mettle 0.15.0 e 0.15.1


3

Il 31 luglio sono stati rilasciati 0.15.0 e 0.15.1 Mettle — linguaggio di programmazione di sistema con tipizzazione statica:

  • Supporto nativo per x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0).

  • Linker proprietario per Windows PE.

  • Debugger a livello di codice sorgente:

    • Senza formati esterni.
    • Punti di interruzione, debug passo-passo, oltre alla lettura e scrittura di variabili in tempo reale tramite —debug-hooks.
    • Senza gdb, PDB e DWARF.
  • Backend CUDA.

  • Senza LLVM, macchina virtuale e runtime.

  • Esecuzione in fase di compilazione: funzioni con l'attributo @test vengono eseguite nell'interprete del compilatore con il comando mettle test, senza creare un file binario. Il comando mettle trace interpreta una funzione e fornisce il tracciamento riga per riga dei valori. Il comando —pgo interpreta la funzione main() in fase di compilazione e restituisce le frequenze di chiamata misurate all'ottimizzatore.

  • Verifica dei prestiti (borrow checker):

    DescrizioneEsempioSimile a Rust
    Use-after-free (diretto)free(p); p[0]ownership / Drop
    Double freefree(p); free(p)ownership
    Use-after-free attraverso un aliasq = p; free(q); p[0]semantica di movimento
    Use-after-free attraverso una chiamata (inferito)consume(p); p[0] dove consume libera psemantica di movimento
    Borrow outliving its stack scope{ var x; g = &x[0]; } use(g)lifetimes (‘a)
    Puntatore interno dopo reallocq = &buf[i]; realloc(buf,..); q[0]invalidazione dell'iteratore
    Puntatore interno dopo freeq = &buf[i]; free(buf); q[0]riferimento sospeso
    Restituzione dell'indirizzo di una variabile locale nello stackreturn &localfn() -> &T errore di lifetime
    Fuga (nessun proprietario su alcun percorso)var p = malloc(n); return 0(Rust libera tramite Drop)

Il compilatore è basato sulla libreria libmtlc:

  • Linguaggio intermedio (IR) proprietario.
  • Ottimizzatori di codice classici e GNN.
  • Generazione di codice nativa (x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0)).
  • Linking nativo.

Progetti scritti da un programmatore di Cape Town suidvandiewereld in linguaggio C (standard C99) e distribuiti sotto licenza Apache-2.0.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster