Język programowania Crystal 1.0 jest dostępny

Wydano język programowania Crystal 1.0. Wydanie to jest uznawane za pierwszy znaczący krok, podsumowujący 8 lat pracy oraz oznaczający stabilizację języka i jego gotowość do użycia w projektach roboczych. W gałęzi 1.x zapewniana będzie wsteczna kompatybilność oraz gwarancja braku zmian w języku i standardowej bibliotece, które mogłyby negatywnie wpłynąć na kompilację i działanie istniejącego kodu.

Wydania 1.0.y będą obejmować jedynie poprawki błędów, natomiast wersje 1.x.0 będą oferować nową funkcjonalność oraz istotne zmiany, zachowując jednocześnie kompatybilność z kodem. Nowe pomysły oraz potencjalnie niekompatybilne zmiany będą rozwijane w osobnej gałęzi, na podstawie której zostanie w przyszłości utworzone wydanie Crystal 2.0. Niektóre możliwości Crystal 1.0 ogłoszone zostały jako wstępne i mimo że są dostępne w gałęzi 1.0, nie są objęte oficjalnym wsparciem. Wśród tych możliwości znajdują się jednowątkowość, praca na platformie Windows oraz użycie na systemach z procesorami ARM.

Przypomnijmy, że twórcy Crystal starają się połączyć wygodę tworzenia w języku Ruby z wysoką wydajnością aplikacji charakterystyczną dla języka C. Składnia Crystal jest podobna do języka Ruby, lecz nie jest w pełni z nim kompatybilna, mimo że niektóre programy ruby działają bez przekształceń. Kod kompilatora napisany jest w języku Crystal i jest rozpowszechniany na licencji Apache 2.0.

W języku zastosowano statyczne sprawdzanie typów, realizowane bez konieczności jawnego wskazywania typów zmiennych oraz argumentów metod w kodzie. Programy w Crystal kompilowane są do plików wykonywalnych, przy obliczaniu makr i generacji kodu w trakcie kompilacji. W programach w języku Crystal możliwe jest dołączenie bindów napisanych w języku C. Równoległe wykonywanie kodu odbywa się za pomocą słowa kluczowego „spawn”, które pozwala na uruchomienie zadania w tle w trybie asynchronicznym, nie blokując głównego wątku, w postaci lekkich wątków, nazywanych fibrami (Fiber).

Standardowa biblioteka oferuje szeroki zestaw typowych funkcji, w tym narzędzia do przetwarzania CSV, YAML i JSON, komponenty do tworzenia serwerów HTTP oraz wsparcie dla WebSocket. W procesie rozwoju wygodnie jest korzystać z polecenia „crystal play”, które generuje interfejs webowy (domyślnie localhost:8080) do interaktywnego wykonywania kodu w języku Crystal.

Główne zmiany:

  • W krotkach dozwolone jest indeksowane odwoływanie się do elementów różnych typów, ponieważ kompilator ma informacje o tym, jakiego typu jest każdy element. Na przykład: tuple = {1, „hello”, ‘x’} v = tuple[0..1] # zwróci {1, „hello”} typeof(v) # => Tuple(Int32, String)
  • W literałach łańcuchowych i znakowych zabronione jest użycie skrótów zastępczych w sekwencjach ucieczki Unicode, takich jak „\uD834”. Do kodowania dowolnych wartości należy używać notacji „\x”.
  • W standardowej bibliotece usunięto dużą liczbę definicji, makr i metod, które wcześniej były oznaczone jako przestarzałe. W tym metody Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill itp.
  • W makrach getter i property teraz wymagane jest wskazanie zwracanego typu.
  • Domyślna metoda zaokrąglania została zmieniona na TIES_EVEN („zaokrąglanie bankierskie”, do najbliższej liczby całkowitej, a w przypadku równorzędnych sytuacji do najbliższej liczby parzystej). Do Number#round dodano parametr RoundingMode, który pozwala wybrać metodę zaokrąglania. Wśród dostępnych metod znajduje się: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • W kolekcjach zapewniono działanie Enumerable#flat_map i Iterator#flat_map z elementami mieszanych typów.
  • Podczas serializacji sekwencji Enum teraz używane jest przedstawienie w formie łańcuchów ze znakiem podkreślenia.
  • Typy zdefiniowane w module XML zostały przetłumaczone z użycia struct na class.
  • Z względów bezpieczeństwa zaprzestano dekodowania nazw Cookie oraz kodowania i dekodowania wartości Cookie (przekodowanie spoczywa na ramionach frameworków i aplikacji). Metoda HTTP::Cookies.from_headers została podzielona na dwie wersje dla serwerów i klientów.

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster