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.
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
- Clarify some edge cases of using nominalizables
- Consistently throw
X::Binderrors when rebinding readonly parameters or sigilless terms
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_DISABLEenvironment 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
Routineobject (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
^Cabort 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
- What is Your Preferred Vim Setup When Writing Code in Raku? by s-ro_mojosa.
- Can Raku OO help me avoid integration layer boilerplate by Steve Roe.
Meanwhile on Twitter
- Serializing custom objects by Jonathan Stowe.
- Choosing names by Alexey Melezhik.
- #131.2 in a tweet by Markus Holzer.
- Inspired by Vadim by Jonathan Stowe.
- A great cost by Dmitry Lobanov.
- Don’t know what happened by おがわけんたろう.
- Looking for participants by Ann Barcomb.
- Hoping to be that by Howard C. Shaw III.
- Moving Goalposts by Joseph Holsten.
- Introducing opt-in serialization by Jonathan Stowe.
- Call me Raku by 出来損ない.
- A domain name by Alexey Melezhik.
- A tool called Larry by Alexey Melezhik.
- Reply button by Alexey Melezhik.
- Have you seen? by mempko.
- So, like? by Thomas Rodgers.
- A brilliant hacker by aatssts.
- Source, docs and blog post by Wim Vanderbauwhede.
- Code with feed by Suman Khanal.
- Coerce to its length by Ben Davies.
Meanwhile on the mailing list
- Different behavior for strings and strings in variables with multi-dispatch using a subset by Joseph Brenner.
- Order of multi sub definitions can resolve dispatch ambiguity by Joseph Brenner.
Comments about Raku
asyncby Ralph Mellor.
- The idea of pronoun variables by Ralph Mellor.
- The transition didn’t help by thedjotaku.
- How can it be a smooth refactor? by complyue.
- Quickly construct a programming language by Ralph Mellor.
- Not afflicted by syphilis.
- Solving one problem by David Cassel.
- Better than
tighterby Ralph Mellor.
- Seems less mentioned by complyue.
New Raku modules
- JSON::OptIn Provide a trait and role to identify opt-in JSON serialization by Jonathan Stowe.
Updated Raku Modules
- Alma by Carl Mäsak.
- Net::Ethereum by Konstantin Narkhov.
- DateTime::Timezones by Matthew Stuckwisch.
- Data::Record, Trait::Traced by Ben Davies.
- CSS, CSS::Font::Resources, CSS::Stylesheet, CSS::TagSet,URI by David Warring.
- hide-methods by Elizabeth Mattijsen.
- Igo, JSON::Marshal, JSON::Name by Jonathan Stowe.
- Gnome::GObject, Gnome::Gtk3, Gnome::N by Marcel Timmerman.
- Config::BINDish by Vadim Belman.
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!