De programmeertaal Crystal 1.0 is beschikbaar.

De release van de programmeertaal Crystal 1.0 heeft plaatsgevonden. Deze uitgave wordt gemarkeerd als de eerste significante release die de resultaten van 8 jaar ontwikkeling samenvat en de stabilisatie van de taal aantoont, evenals de gereedheid voor gebruik in operationele projecten. In de 1.x-tak zal de achterwaartse compatibiliteit worden ondersteund en is gegarandeerd dat er geen wijzigingen in de taal en de standaardbibliotheek zullen zijn die een negatieve invloed hebben op de compilatie en werking van bestaande code.

Versies 1.0.y zullen alleen correcties bevatten, terwijl de versies 1.x.0 nieuwe functionaliteit en significante wijzigingen zullen bieden, met behoud van compatibiliteit met de code. Nieuwe ideeƫn en potentieel incompatibele wijzigingen zullen zich in een aparte tak ontwikkelen, waarvan later de release van Crystal 2.0 zal worden gevormd. Sommige mogelijkheden van Crystal 1.0 zijn als voorlopig aangemerkt en, hoewel ze in de 1.0-tak aanwezig zijn, vallen ze niet onder officiƫle ondersteuning. Onder deze mogelijkheden bevinden zich single-threading, ondersteuning voor het Windows-platform en gebruik op systemen met ARM-processors.

Ter herinnering, de ontwikkelaars van Crystal proberen het gemak van het ontwikkelen in de programmeertaal Ruby te combineren met de hoge prestaties van applicaties, kenmerkend voor de programmeertaal C. De syntaxis van Crystal lijkt op die van Ruby, maar is niet volledig compatibel, hoewel sommige Ruby-programma's zonder aanpassing kunnen worden uitgevoerd. De compiler is geschreven in de programmeertaal Crystal en wordt verspreid onder de Apache 2.0-licentie.

De taal maakt gebruik van statische typechecking, die is geĆÆmplementeerd zonder dat expliciete typeaanduidingen voor variabelen en argumenten van methoden in de code nodig zijn. Programma's in Crystal worden gecompileerd naar uitvoerbare bestanden, met macrocalculaties en codegenereatie tijdens de compilatie. In Crystal-programma's is het mogelijk om bindings te koppelen die in C zijn geschreven. Het parallel uitvoeren van code wordt uitgevoerd met behulp van het sleutelwoord 'spawn', dat het mogelijk maakt om een achtergrondtaak asynchroon te starten zonder de hoofdthread te blokkeren, in de vorm van lichte threads, bekend als fibers.

De standaardbibliotheek biedt een uitgebreide set standaardfuncties, waaronder hulpmiddelen voor het verwerken van CSV, YAML en JSON, componenten voor het creƫren van HTTP-servers en ondersteuning voor WebSocket. Tijdens de ontwikkeling is het handig om het commando 'crystal play' te gebruiken, dat een webinterface genereert (standaard localhost:8080) voor interactieve uitvoering van code in de Crystal-taal.

Belangrijkste wijzigingen:

  • In tuples is index-toegang tot elementen van verschillende types toegestaan, omdat de compiler weet welk type elk element heeft. Bijvoorbeeld: tuple = {1, "hello", 'x'} v = tuple[0..1] # zal {1, "hello"} opleveren typeof(v) # => Tuple(Int32, String)
  • In string- en character-literalen is het gebruik van surrogaatafkortingen in escape-sequenties voor Unicode, zoals "\uD834", verboden. Voor het coderen van willekeurige waarden dient de notatie "\x" te worden gebruikt.
  • In de standaardbibliotheek is een groot aantal definities, macro's en methoden verwijderd, die eerder als verouderd waren gemarkeerd. Dit omvat onder andere de methoden Set, StaticArray#[], YAML.new, HTTP::Request, HTTP::WebSocket, Hash#delete_if, Process#kill, enzovoorts.
  • In getters en properties van macro's is het nu verplicht om het retourtype op te geven.
  • De standaard afrondingsmethode is gewijzigd in TIES_EVEN ("bankieraf rounding", naar het dichtstbijzijnde gehele getal, en voor grensgevallen naar het dichtstbijzijnde even getal). In Number#round is een parameter RoundingMode toegevoegd, waarmee je de afrondingsmethode kunt kiezen. Beschikbare methoden zijn: TIES_EVEN, TIES_AWAY, TO_ZERO, TO_POSITIVE, TO_NEGATIVE.
  • In collecties wordt de werking van Enumerable#flat_map en Iterator#flat_map met elementen van gemengde types ondersteund.
  • Bij het serialiseren van Enum-sequenties worden nu String-representaties met onderstreping gebruikt.
  • Types, gedefinieerd in de XML-module, zijn overgezet van het gebruik van struct naar class.
  • Om veiligheidsredenen is het decoderen van Cookie-namen stopgezet, evenals het coderen en decoderen van Cookie-waarden (het hercoderen is overgelaten aan frameworks en applicaties). De methode HTTP::Cookies.from_headers is gesplitst in twee varianten voor servers en clients.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster