Ruby/RoR News Digest 2-8.11

Rails 6.0.1 release, active storage changes in Rails 6, persisted queries in GraphQL and many other interesting things
08 November 2019   231

Greetings! I hope your week went great! Here's new "gemmy" programming news digest.

Get familiar with programms, that write themself, how Ruby uses memory exactly, the hide cost of Ruby 2.7 dot-colon method reference usage and many more interesting things.

Guides

  • Persisted queries in GraphQL:Slim down Apollo requests to your Ruby application

Persisted queries are designed for reducing request size by only sending a query ID that is stored on the backend, which is then retrieved and executed; guide covers this topic fully.

  • Writing a program that writes itself

Tutorial about quines in Ruby

Articles

  • How Ruby Really Uses Memory: On the Web and Beyond

New articel by Schneems, totally must-read about the Ruby memory allocation algorithm and what it does when you add thread

  • The hidden cost of the Ruby 2.7 dot-colon method reference usage

Another fee you will be paying for not so "free" Ruby's syntax sugar

  • Rails 6 - Active Storage changes

Detailed look on the changes that was made to one of the main Ruby on Rails gems in version 6

  • Use GitHub Actions for Rails CI with Postgres

This guide gives you the look on the beta version of GitHub's Actions which gives you an opportunaity to run arbitrary workflows, including tests, after certain things happen within your git repository.

Updates

  • Prism

Allows you to build frontend web apps with Ruby and WebAssembly

  • Rails 6.0.1 released

Some bugs are fixed; get more details by clicking on the link above.

  • Tabulo

A terminal table generator for Ruby that may be used, for example, in a live coding session.

Video

  • Episode #214 - Plugging in AnyCable

GraalVM 19.0.3 to be Released

Along with a new update, virtual machine implementations for in JS, Python, Ruby and R received updates too
21 November 2019   62

Oracle has published the release of the universal virtual machine GraalVM 19.3.0, which supports running applications in JavaScript (Node.js), Python, Ruby, R, any languages ​​for JVM (Java, Scala, Clojure, Kotlin) and languages ​​for which the bitcode can be generated LLVM (C, C ++, Rust). Branch 19.3 is classified as long-term support (LTS) and is notable for JDK 11 support, including the ability to compile Java code into executable files (GraalVM Native Image). The project code is distributed under the GPLv2 license. At the same time, new versions of GraalVM-based implementations of the Python, JavaScript, Ruby, and R languages ​​— GraalPython, GraalJS, TruffleRuby, and FastR — have been released.

GraalVM provides a JIT compiler that can execute on-the-fly code of any scripting language in the JVM, including JavaScript, Ruby, Python, and R, and also makes it possible to run native code in the JVM, converted to LLVM bitcode. The tools provided by GraalVM include a language-independent debugger, a profiling system, and a memory allocation analyzer. GraalVM makes it possible to create combined applications with components in different languages, allowing you to access objects and arrays from code in other languages. For languages ​​based on the JVM, it is possible to create executable files compiled into machine code that can be executed directly with minimal memory consumption (memory and thread management are implemented through the connection of the Substrate VM framework).

GraalJS changes (full list):

  • Implemented the Promise.allSettled proposal. It is available in ECMAScript 2020 mode (--js.ecmascript-version=2020).
  • Implemented the nullish coalescing proposal. It is available in ECMAScript 2020 mode (--js.ecmascript-version=2020).
  • Updated ICU4J library to version 64.2.

GraalPython changes (full list):

  • Implement gc.{enable,disable,isenabled} as stubs
  • Implement charmap_build function
  • Implement hexversion in sys module

TruffleRuby changes (full list):

  • Compilation of C extensions is now done with an internal LLVM toolchain producing both native code and bitcode. This means more C extensions should compile out of the box and this should resolve most linker-related issues.
  • It is no longer necessary to install LLVM for installing C extensions on TruffleRuby.
  • It is no longer necessary to install libc++ and libc++abi for installing C++ extensions on TruffleRuby.

 And FastR chages (full list):

  • In this release, FastR does not ship with GCC runtime libraries. Use the following commands to install the necessary dependencies:
  • Preview of support for LLVM based execution of R native extensions
  • Fixed memory leaks reported on GitHub