Programovací jazyk Crystal 1.0 je k dispozici

Bylo uvolněno vydání programovacího jazyka Crystal 1.0. Uvolnění bylo označeno jako první významné vydání, které shrnulo 8 let práce a znamenalo stabilizaci jazyka a jeho připravenost pro použití v pracovních projektech. Větve 1.x bude podporovat zpětnou kompatibilitu a bude zajištěno, že nebudou provedeny žádné změny v jazyce a standardní knihovně, které by negativně ovlivnily sestavení a chod existujícího kódu.

Vydání 1.0.y budou zahrnovat pouze opravné opravy, zatímco verze 1.x.0 budou nabízet nové funkce a významné změny, přičemž zachovají kompatibilitu s kódem. Nové nápady a potenciálně nekompatibilní změny budou vyvíjeny v samostatné větvi, na jejímž základě bude následně vytvořeno vydání Crystal 2.0. Některé funkce Crystal 1.0 jsou označeny jako předběžné a navzdory tomu, že jsou ve větvi 1.0, nepodléhají oficiální podpoře. Mezi těmito funkcemi je monothreading, podpora platformy Windows a použití na systémech s procesory ARM.

Připomínáme, že vývojáři Crystal se snaží zkombinovat pohodlí programování v jazyce Ruby s vysokým výkonem aplikací, který je charakteristický pro jazyk C. Syntaxe Crystal je blízká jazyku Ruby, ale není s ním zcela kompatibilní, ačkoli některé ruby programy se provádějí bez úprav. Kód kompilátoru je napsán v jazyce Crystal a je distribuován pod licencí Apache 2.0.

Jazyk používá statickou kontrolu typů, která je implementována bez nutnosti výslovného uvedení typů proměnných a argumentů metod v kódu. Programy napsané v Crystal jsou kompilovány do spustitelných souborů, s vyhodnocením maker a generováním kódu během kompilace. V programech napsaných v jazyce Crystal je povoleno připojení vazeb napsaných v jazyce C. Paralelizace vykonávání kódu se provádí pomocí klíčového slova „spawn“, které umožňuje spustit pozadí úkolu v asynchronním režimu, aniž by blokovalo hlavní vlákno, ve formě lehkých vláken nazývaných fibery.

Standardní knihovna poskytuje širokou škálu typických funkcí, včetně nástrojů pro zpracování CSV, YAML a JSON, komponentů pro vytváření HTTP serverů a podporu WebSocket. Během vývoje je užitečné používat příkaz „crystal play“, který vytváří webové rozhraní (výchozí localhost:8080) pro interaktivní vykonávání kódu v jazyce Crystal.

Hlavní změny:

  • V tuplech je povolené indexované přístupy k prvkům různých typů, protože kompilátor má informace o tom, jaký typ každý prvek má. Například: tuple = {1, „hello“, ‘x’} v = tuple[0..1] # vrátí {1, „hello“} typeof(v) # => Tuple(Int32, String)
  • Ve stringových a znakových literálech je zakázáno používat zástupné zkracování v escape sekvencích Unicode, jako například „\uD834“. Pro kódování libovolných hodnot byste měli používat notaci „\x“.
  • Ve standardní knihovně bylo odstraněno velké množství definic, makros a metod, které byly dříve označeny jako zastaralé. Včetně metod Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill a dalších.
  • V makrech getter a property je nyní povinné uvádět vracený typ.
  • Výchozí metoda zaokrouhlování byla změněna na TIES_EVEN („bankéřské zaokroulení“, na nejbližší celé číslo a pro hraniční situace na nejbližší sudé číslo). Do Number#round byl přidán parametr RoundingMode, který umožňuje vybrat metodu zaokroulování. Mezi dostupnými metodami jsou: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • V kolekcích je zajištěna funkčnost Enumerable#flat_map a Iterator#flat_map s prvky smíšených typů.
  • Při serializaci sekvencí Enum se nyní používají reprezentace ve formě řetězců se podtržítkem.
  • Typy definované v modulu XML byly převedeny z použití struct na class.
  • Z bezpečnostních důvodů bylo přerušeno dekódování názvů Cookie, stejně jako kódování a dekódování hodnot Cookie (překódování bylo převedeno na ramena frameworků a aplikací). Metoda HTTP::Cookies.from_headers byla rozdělena na dvě verze pro servery a klienty.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster