Objavljen je mruby 3.0, ugrađeni interpreter dinamičkog objektno-orijentiranog programskog jezika Ruby. Mruby osigurava sintaktičku kompatibilnost s Ruby 1.9, ali također podržava određene mogućnosti iz novijih verzija. Interpreter se odlikuje niskom potrošnjom memorije i mogućnošću ugrađivanja u druge aplikacije. Osim toga, podržava kompilaciju Ruby programa u bajtkod pomoću razvijanog projekta kompajlera „mrbc“. Kod mruby se distribuira pod MIT licencom.
U novom izdanju značajno je smanjena potrošnja memorije koju koristi mruby VM. Prethodne verzije su zahtijevale nekoliko stotina KB radne memorije, dok mruby 3.0 troši oko 100 KB RAM-a. Glavna poboljšanja:
- Smanjena potrošnja radne memorije optimizacijom dodjeljivanja memorije za objekte klase Symbols. Smanjena potrošnja memorije objekata klase Hash. Provedena optimizacija poziva metoda.
- Dodana podrška za jednolinijsko definiranje metode bez korištenja ključne riječi „end”: def square(x) = x * x
- Dod operator „=>” (vrijednosti => varijabla), koji se koristi za desnu dodjelu vrijednosti. 0 => a p a #=> 0 {b: 0, c: 1} => {b:} p b #=> 0
- Podrška za konstrukciju heredocs.
- Ažurirani su datoteke za izgradnju interpretera. Dodana je kompilacija s gprof. GCC sada može kompilirati u 32-bitnom načinu na 64-bitnim platformama. Dodana je podrška za Address Sanitizer u clang.
- Promjena koja krši kompatibilnost: konstanta RITE_VM_VER sada ima vrijednost 0300, a RITE_BINARY_FORMAT_VER — 0200, što isključuje mogućnost izvršavanja bajtkoda iz prethodnih verzija.
- Klasa Fixnum postala je dio Integer, kao u Ruby 3.0. Uklonjena je klasa Integral.
Izvor: opennet.ru
