Ruby 3.0.0, en opgradering af det elskede dynamiske open source-sprog, kom som en produktionsudgave juledag. Højdepunkterne i den nye version omfatter parallel udførelse og typebeskrivelsesfunktioner.
Parallel udførelse kommer i form af en eksperimentel funktion kaldet “Ractor”, som er en Actor-model-lignende samtidighedsabstraktion, der har til formål at give parallel udførelse uden problemer med trådsikkerhed. Udviklere kan lave flere ractors og køre dem parallelt. Disse parallelle programmer kan gøres trådsikre, fordi ractors ikke kan dele normale objekter. Kommunikation mellem ractors understøttes af message-passing. For at begrænse deling af objekter indfører Ractor imidlertid begrænsninger i Rubys syntaks.
Ruby 3.0.0.0 introducerer også RBS, der er beskrevet som et sprog til at beskrive typerne af Ruby-programmer. Ruby 3.0.0.0 leveres med rbs
gem’en, som gør det muligt at analysere og behandle typedefinitioner skrevet i RBS. Typecheckere, herunder typeprofiler og andre værktøjer, der understøtter RBS, vil forstå Ruby-programmer bedre med RBS-definitioner.
RBS er beregnet til at understøtte almindeligt forekommende mønstre i Ruby-programmer. Der kan skrives avancerede typer, herunder unionstyper, overbelastning af metoder og generiske typer. Duck typing med interfacetyper understøttes også.
Ud over Ractor og RBS tilbyder Ruby 3.0.0 et væld af andre muligheder:
- Fiber#scheduler, til at opsnappe blokerende operationer. Kapaciteten, der tidligere blev identificeret som
Thread#scheduler
, giver mulighed for letvægts-konkurrence uden at ændre eksisterende kode. - Memory view, en anden eksperimentel funktion, er et C-API-sæt til at udveksle et råt hukommelsesområde, f.eks. et numerisk array eller et bitmap-billede, mellem udvidelsesbiblioteker. Disse biblioteker kan også dele metadataene for hukommelsesområdet, der består af formen, elementformen osv.
- Forbedret ydeevne i Ruby MJIT-kompileren (Method-based Just In Time).
- Separation af nøgleordsargumenter fra andre argumenter.
-
Hash#except
indbygget. - En højrevendt tildelingsangivelse.
- En endeløs metodefinition.
- Indførelse af find-mønster.
Udviklere kan downloade Ruby 3.0.0.0 fra ruby-lang.org. Ruby 3.0.0.0 blev afsløret som et preview den 25. september 2020. Dette blev efterfulgt af et efterfølgende preview den 8. december og en release candidate den 20. december.