Uscita del linguaggio di programmazione Nim 2.2.8

È stato presentato il rilascio del linguaggio di programmazione sistematica Nim 2.2.8. Nim è un linguaggio di programmazione staticamente tipizzato e compilato, con una sintassi ispirata a Python, e capacità di metaprogrammazione a livello di Lisp. Il linguaggio si compila in C, C++ e JavaScript, garantendo prestazioni paragonabili a quelle del C con l'espressività di linguaggi di alto livello. Il codice del progetto è fornito sotto licenza MIT.

Le funzionalità di Nim includono un sistema di macro che lavora sull'AST durante la compilazione, supporto per la programmazione generica con concetti, dispatch multiplo, gestione della memoria deterministica con supporto per diverse strategie (ARC/ORC, refc, marcatura e raccolta), supporto integrato per async/await per la programmazione asincrona e FFI per una semplice integrazione con C/C++/JavaScript. Nim si posiziona come un linguaggio sistematico adatto allo sviluppo di sistemi embedded fino al web,server, con un focus su efficienza, sicurezza della memoria e facilità di sviluppo.

L'uscita della versione 2.2.8 è avvenuta dopo quattro mesi dalla versione 2.2.6 e include 89 commit con correzioni di errori e miglioramenti. Il principale miglioramento del rilascio è stato una notevole stabilità dell'allocatore di memoria standard durante l'uso intensivo della multithreading. Secondo gli sviluppatori, la necessità di una soluzione alternativa «-d:useMalloc» per il codice multithreaded è ormai un ricordo del passato. Gli utenti sono invitati a fornire feedback.

Tra gli errori corretti:

  • SIGBUS durante l'iterazione su una tabella costante a causa della distruzione prematura di oggetti temporanei;
  • SIGSEGV con iteratori chiusi;
  • errata generazione di codice C all'interno della inizializzazione .global in un metodo;
  • errore nel trattamento del finally in un iteratore chiuso in presenza di try..except;
  • errato name mangling in stile C++ quando si utilizza —debuginfo;
  • lento funzionamento di setLen durante la riduzione della dimensione della sequenza a causa di una pulizia eccessiva della memoria;
  • assenza di setLenUninit per la modalità «—mm:refc»;
  • blocco del processo di riscrittura di termini su file grandi;
  • SIGSEGV durante l'uso di tipi distinti con assegnazione a oggetti heap in modalità refc;
  • accesso non corretto a m_type nei hook per i tipi distinct generali in ARC/ORC/ATOMICARC;
  • fail del compilatore durante il passaggio di una tupla con «items» dal concetto;
  • i concetti ricorsivi hanno causato un segfault del compilatore;
  • generazione non corretta di richieste HTTPS tramite HTTP proxy in httpclient;
  • comportamento indefinito durante l'operazione shl;
  • troncamento dei letterali interi lunghi senza avviso;
  • fallimenti del compilatore durante una serie di istanze generiche non corrette;
  • aggiunta della modalità —styleCheck:warn.

Fonte: opennet.ru

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