2021.39 Programming Haku

Wim Vanderbauwhede introduces Haku, a Japanese programming language. It shows a very interesting example of how you can use grammars of the Raku Programming Language to create your own programming language (see introduction). This caused quite a discussion on Hacker News and some on /r/rakulang.

Benchmarking Floating Point

John Walker added the Raku Programming Language to their comparison of a floating point benchmark of 30+ programming languages, which put Raku square at the bottom. Some research by Daniel Sockwell showed that with only slight alterations, the benchmark would be orders of magnitude faster (even without using parallelism features, that are used with the benchmarks of some other languages). Good to see this type of “shootout”, but beware of the adage: “Lies, Damn Lies, Statistics, and Benchmarks”! 🙂

Reflections on a Decade

Jonathan Worthington will be giving a keynote at the Workshop on Virtual Machines and Language Implementations (aka VMIL ’21) on 19 Oct 2021. The title of the keynote is Reflections on a decade of MoarVM, a runtime for the Raku Programming Language.

Daniel’s Corner

Daniel Sockwell posted a nice blog post about how the Raku Programming Language can give a surprisingly good Lisp impression (with an extensive and insightful discussion on /r/rakulang).

Wenzel’s Corner

Wenzel P.P. Peppmeyer wrote one blog post this week, about convoluted code: Convolution.


Weekly Challenge #132 is available for your perusal.

New Pull Requests

Core Developments

Since development on the main branch has basically halted, and all development is now on the new-disp branch (soon to be merged), reporting on new-disp developments from now on here.

  • Jan-Olof Hendig realized that the expression JIT logic has a bug that actually slows down execution of code, both on the master branch as well as on the new-disp branch. If you would like to disable the expression JIT logic for your programs, make sure the MVM_JIT_EXPR_DISABLE environment variable is set to a true value. It is yet unclear what the followup on this fact will be.
  • Jonathan Worthington saw a relatively easy way to optimize subroutine calls, specifically of many core infix operators. Elizabeth Mattijsen made sure that that optimization was actually applied to the core in many places. Jonathan also reduced memory footprint of each Routine object (or clone thereof) by 8 bytes.
  • Timo Paulssen added logic to the spesh log file to make it more easily searchable, even when incomplete (e.g. after a ^C abort of a program).
  • Jimmy Zhuo fixed various compiler warnings on Windows, and implemented a computed goto solution for the op dispatcher.
  • Nicholas Clark fixed a potential security issue where a C-struct would not get initialized properly.
  • Stefan Seifert fixed an issue that would occur when loading bytecode would cause a global de-optimization.
  • And many, many other fixes and improvements to make the new-disp branch ready for merging.

The really good news is that the well-known test-t benchmark is now 20% faster on the new-disp branch (and that’s with the expression JIT de-activated). With only one known regression in the ecosystem left.

Questions about Raku

Meanwhile on Twitter

Meanwhile on the mailing list

Comments about Raku

New Raku modules

  • JSON::OptIn Provide a trait and role to identify opt-in JSON serialization by Jonathan Stowe.

Updated Raku Modules

Winding down

Yours truly again had hopes to be able to announce the merge of the new-disp branch. It appears this will happen the day after the publication of this Weekly. But this week’s crop is impressive nonetheless! A new programming language to play with (especially if you know Japanese). Also enjoy the thought provoking blog posts and their thought provoking comments. And it can’t be said enough: stay safe and stay healthy. Hope to see you again next week!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s