Wydanie języka programowania Crystal 1.2

Opublikowano wydanie języka programowania Crystal 1.2, którego twórcy starają się połączyć wygodę programowania w języku Ruby z wysoką wydajnością aplikacji charakterystyczną dla języka C. Składnia Crystal jest zbliżona do języka Ruby, ale nie jest z nim w pełni kompatybilna, chociaż niektóre programy w języku Ruby działają bez modyfikacji. Kod kompilatora napisany jest w języku Crystal i rozpowszechniany na licencji Apache 2.0.

Język wykorzystuje statyczne sprawdzanie typów, realizowane bez konieczności jawnego określania typów zmiennych i argumentów metod w kodzie. Programy Crystal są kompilowane do plików wykonywalnych, z oceną makr i kodem generowanym w czasie kompilacji. W programach Crystal możliwe jest łączenie powiązań napisanych w C. Równoległość wykonywania kodu odbywa się za pomocą słowa kluczowego „spawn”, które pozwala na asynchroniczne uruchomienie zadania w tle, bez blokowania głównego wątku, w postaci lekkich wątków zwanych włóknami.

Biblioteka standardowa udostępnia duży zestaw typowych funkcji, w tym narzędzia do przetwarzania plików CSV, YAML i JSON, komponenty do tworzenia serwerów HTTP oraz obsługę protokołu WebSocket. Podczas procesu programowania wygodnie jest użyć polecenia „crystal play”, które generuje interfejs sieciowy (domyślnie localhost: 8080) do interaktywnego wykonywania kodu w języku Crystal.

Główne zmiany:

  • Dodano możliwość przypisania podklasy klasy ogólnej do elementu klasy nadrzędnej. klasa Foo(T); klasa końcowa Bar(T) < Foo(T); koniec x = Foo x = Bar
  • Makra mogą teraz używać podkreślenia do ignorowania wartości w pętli for. {% dla _, v, i w {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% end %}
  • Dodano metodę „file_exists?” do makr. aby sprawdzić istnienie pliku.
  • Biblioteka standardowa obsługuje teraz 128-bitowe liczby całkowite.
  • Dodano moduł Indexable::Mutable(T) z implementacją zaawansowanych operacji na kolekcjach takich jak BitArray i Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Dodano metodę XML::Node#namespace_definition w celu wyodrębnienia określonej przestrzeni nazw z XML.
  • Metody IO#write_utf8 i URI.encode są przestarzałe i należy je zastąpić metodami IO#write_string i URI.encode_path.
  • Obsługa 32-bitowej architektury x86 została przeniesiona na drugi poziom (gotowe pakiety nie są już generowane). Przygotowywane jest przejście na pierwszy poziom wsparcia dla architektury ARM64.
  • Trwają prace nad zapewnieniem pełnego wsparcia dla platformy Windows. Dodano obsługę gniazd Windows.
  • Dodano uniwersalny pakiet dla systemu macOS, działający zarówno na urządzeniach z procesorami x86, jak i na sprzęcie z chipem Apple M1.

Źródło: opennet.ru

Dodaj komentarz