Nowa wersja języka programowania Nim 0.20

Odbyła się wydanie języka programowania systemu Nim 0.20.0. Język wykorzystuje pisanie statyczne i został stworzony z myślą o Pascalu, C++, Pythonie i Lisp. Kod źródłowy Nim jest kompilowany do postaci C, C++ lub JavaScript. Następnie powstały kod C/C++ jest kompilowany do pliku wykonywalnego przy użyciu dowolnego dostępnego kompilatora (clang, gcc, icc, Visual C++), co pozwala na osiągnięcie wydajności zbliżonej do C, jeśli nie uwzględnić kosztów uruchomienia śmieciarz. Podobnie jak Python, Nim używa wcięć jako ograniczników bloków. Obsługiwane są narzędzia i możliwości metaprogramowania do tworzenia języków specyficznych dla domeny (DSL). Kod projektu dostarczane na licencji MIT.

Wydanie Nim 0.20 można uznać za kandydata na pierwszą stabilną wersję 1.0, zawierającą kilka zmian zakłócających interoperacyjność potrzebnych do utworzenia pierwszej stabilnej gałęzi, która zatwierdzi stan języka. Wersja 1.0 jest reklamowana jako stabilna, długoterminowa wersja wspierająca, która gwarantuje zachowanie kompatybilności wstecznej w ustabilizowanej części języka. Oddzielnie kompilator będzie miał również dostępny tryb eksperymentalny, w którym opracowywane będą nowe funkcje, które mogą zakłócać kompatybilność wsteczną.

Wśród zmian zaproponowanych w Nim 0.20 są:

  • „Not” jest teraz zawsze operatorem jednoargumentowym, tj. wyrażenia takie jak „twierdzić (nie a)” są teraz niedozwolone i dozwolone jest jedynie „twierdzić, że nie a”;
  • Włączono ścisłą kontrolę konwersji liczb całkowitych i rzeczywistych na etapie kompilacji, tj. wyrażenie „const b = uint16(-1)” spowoduje teraz błąd, ponieważ -1 nie można przekonwertować na typ całkowity bez znaku;
  • Zapewnione jest rozpakowywanie krotek dla stałych i zmiennych pętli.
    Na przykład teraz możesz używać przypisań takich jak „const (d, e) = (7, „osiem”)” i „for (x, y) in f”;

  • Zapewniono domyślną inicjalizację skrótów i tabel. Przykładowo po zadeklarowaniu „var s: HashSet[int]” można od razu wykonać „s.incl(5)”, co poprzednio kończyło się błędem;
  • Poprawione informacje o błędach w przypadku problemów związanych z operatorem „case” i indeksem tablicy poza zakresem;
  • Zmiana długości tabeli podczas iteracji jest zabroniona.

Źródło: opennet.ru

Dodaj komentarz