Skip to content
EN

Back to the catalog

andrewshitov.com
rss2American English

Andrew Shitov

andrewshitov.com · American English

Science, Programming, Electronics, Languages

rss2 video wordpress content slash wfw atom dc sy

Open the feed

https://andrewshitov.com/feed/

Last post
Oct 3, 2026
Posts in 24 h · 7 days · 30 days
0 · 3 · 7
Our last check
Answering
Served from
Germany
Site title
Andrew Shitov – Science, Programming, Electronics, Languages
Text score at discovery
6,335
Format
rss2
Features in the feed
content, slash, wfw, atom, dc, sy
Community
wordpress

Posts

What our queue read from this feed. Open one to read it here, or go to the site that published it.

  1. Raku: a language where a value can have several values at once (Part 2)
    Oct 3, 2026 · original
    Last time we saw that a junction is something you may treat as a single value, even though it’s more than that. For example, you can add a number to three numbers at once: my $j = 1 | 2 | 3; ($j + 10).say; # 11, 12, 13, one per line Knowing this helps us to use junctions in more complex contexts, for example, as a condition in grep or map : say (1 .. 999).grep(* %% (3 | 5)).sum; Here, we compute the sum of all the numbers from 1 to 999 that are divisible by 3 or 5 (999 inclusive). A similar example with strings and first : my @langs = Cobol Pascal Perl Raku PHP Python; say @langs.first(*.lc eq any(perl raku)); # Perl say so 'Cobol' eq any(@langs); # True Here’s a more practical example, where a filename extension is tested without using regexes: my $file = 'photo.bmp'; say so $file.ends-with('.jpg' | '.png' | '.gif'); # False And this is, in fact, yet another demonstration of the TIMTOWT
  2. Using Raku in Python
    Oct 3, 2026 · original
    TL;DR: $ pip install rakulang $ python Python 3.14.4 (main, Aug 20 2026, 10:41:58) [GCC 15.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. import rakulang rakulang.interpreter().eval(" sub postfix:!($n) {[*] 1..$n}; say 5! ") 120 True Raku in a Python program In other words, you can now use Raku in your Python programs. For that, no engine — neither Raku++, nor Rakudo, nor mutsu — has to be installed on the computer. All you need to do is install the rakulang package from PyPI (the Python Package Index): $ pip install rakulang On Ubuntu and Debian you may need to create a virtual environment first: $ python3 -m venv ~/raku-env $ . ~/raku-env/bin/activate $ pip3 install rakulang Once that’s done, you get a fresh version of the Raku++ compiler, and it’s available in rakulang.interpreter() : import rakulang raku = rakulang.interpreter() You can now call
  3. Raku++ v5.0.0 reaches 100.00% of Roast
    Sep 29, 2026 · original
    The new version of Raku++ , v5.0.0, has been released and it passes 100.00% of Roast. Roast is a test suite for Raku conformance: if an implementation passes it, it can call itself a Raku implementation. So Raku++ is formally an official Raku implementation now. I added .00% to the number on purpose, as a rounded 100% mark could be achieved without the last couple of dozen tests passing. It took some time to close the last gap. The first sharp rise came with implementing Unicode 17 support, which unlocked about 92k suite tests. Then, for a couple of months, Roast coverage stalled at about 90-92%. Reaching the last 8% was a much slower process, but here we are. The raw numbers now are: 220054 passed of 220055 declared tests. 218421 passed of 218422, which are listed in the so-called spectest list. It includes the majority of Roast with some exceptions. The only failing test is where the t
  4. Raku++ module manager
    Sep 17, 2026 · original
    This latest Raku++ release v4.0.0 is called Raku that travels . That suggests that you can take Raku with you and use it beyond the Raku bubble. One of the goals of the release was to ensure that at least 1000 modules from the Raku ecosystem works with Raku++. And that goal was achieved: a bit more than 1000 modules from about 2500 distributions now pass their own suite tests. Installing modules Raku++ module manager is now fully embedded in the main rakupp binary. (You no longer need to take the tools/install.raku program with you.) Installing, upgrading and removing modules with Raku++ is easy: $ rakupp install Config::INI $ rakupp reinstall Config::INI $ rakupp uninstall Config::INI You can also test the module before really installing it, as well as you can skip the tests and install: $ rakupp test Config::INI $ rakupp install --no-test Config::INI This process is fully compatible wi
  5. Raku: la lingua dove posso parlare italiano
    Sep 15, 2026 · original
    (Raku: the language where I can speak Italian) There are a few interesting modules in the L10N namespace in the Raku ecosystem: L10N itself and the family of L10N::... modules written by different authors (I added three just yesterday). What these modules allow you to do is switch the built-in keyword dictionary of the language itself and thus write code in a language other than English. Of course, you could always use identifiers (such as variable and routine names) in any language, including those with non-Latin alphabets. my $saluto = 'Buongiorno'; my $nome = 'Isabella'; say "$saluto, $nome!"; But these modules allow you to extend the idea to elements of Raku itself. Consider the following program: il-mio $saluto = 'Buongiorno'; il-mio $nome = 'Isabella'; dillo "$saluto, $nome!"; This program does not compile unless you add L10N::IT : use L10N::IT; il-mio $saluto = 'Buongiorno'; il-mi
  6. Raku: a language where a value can have several values at once (Part 1)
    Sep 13, 2026 · original
    If you did not get the idea from the title, here’s an example straight away: my $x = 5; say "OK" if $x == 3 | 5 | 7; This program prints OK , as $x holds 5, which is one of the options listed in 3 | 5 | 7 . The construct 3 | 5 | 7 is called a junction — many values in a single value. And the result of a comparison with it is also a junction: my $x = 5; say (3 | 5 | 7).WHAT; # (Junction) say ($x == 3 | 5 | 7).WHAT; # (Junction) So, when we compare 5 in $x with 3 | 5 | 7 , the result is any(False, True, False) . It is enough for one of the three values to be true , so the whole comparison is also true . It’s that simple. You don’t have to worry about how Raku computes it: sequentially, in parallel using a multi-core processor or simultaneously in parallel universes; you just get the result. To see the result in a simple Boolean form, convert a junction to a Boolean with so : say so 5 == 3
  7. Native GUI with Raku
    Sep 11, 2026 · original
    With Raku being a general-purpose programming language (or, more precisely, a multi-paradigm language), you still think of it as more of a language to write programs that compute or do something with text or serve the web, but not interfaces. So I decided to answer a question if we can create full GUIs with Raku. I started with Raku++ and ended up with a module called GUI::Wings that works on three platforms (macOS, Linux, Windows) and can be used with both Raku++ and Rakudo. The Wings in the name is a word that reminds Windows , but is served by Camelia, the butterfly mascot of the Raku language. The module is a proof of concept and allows you to build a GUI with three kinds of widgets: the window itself, buttons and labels. Raku’s coolness comes with the way the program reacts to the actions such as button clicks: First, you create a button: my $b = button 'Click me'; And then you ente
  8. Raku: a language that counts to infinity (Part 2)
    Aug 30, 2026 · original
    In this part, let’s look at infinite sequences from another angle: let’s start collecting the values. First of all, Raku has a pair of built-in routines gather and take . They are useful when you need to collect data that’s computed along the way. For example: my @data = gather { for ^50 { my $value = 100.rand.Int; take $value if 45 $value 55; } } say @data; The program prints a few random numbers between 45 and 55 (or none when unlucky). You don’t know upfront how many numbers it will pick, but at least there’s some limit: the loop body runs only 50 times, and the random numbers are less than 100. So, it’s time to introduce some infinity into the code. The next program scans the number, but does not explicitly say how many of them the user will use later. The second line, for example, demands the first five items, and that’s when the real computation happens: my $data = gather for 1 ..
  9. Early Raku++ adopters
    Aug 29, 2026 · original
    For the first time in ~18 years, I am genuinely excited to use Perl 6 (Raku) again. … Finally usable for real-world scenarios! perlancer on X The Raku++ project started on July 1. Today it’s been about two months since then, so let me tell you about some external activities where other people are already using this compiler. Before we go on, a side note: Raku++ is the name of the project, and rakupp is the name of the binary file. But both names can be (and are) used to refer to the project. Platforms The first few requests appeared just a few days after the first public version. Originally, I created releases for macOS, Linux, and Windows only. But people indicated their interest in running Raku++ on other platforms. So the list was extended with MinGW (a runtime that lets you running GCC on Windows), OpenBSD (requested by e-mail rather than via GitHub issues). The users also contribute
  10. Raku: a language that counts to infinity (Part 1)
    Aug 16, 2026 · original
    We’ve already seen that Raku understands characters like ∞ , and it would be logically that you can use them with ease, similar to any other constructs of the language. Take, for example, a sequence with no definite end. You define a pattern and take as many items as you need. say (1, 1, * + * ... ∞)[^10]; Here, the pattern defines a Fibonacci sequence and we only take the first 10 elements of it: (1 1 2 3 5 8 13 21 34 55) You don’t know upfront what the 10 th element will be, so just say that the sequence is defined by the rule * + * and goes towards ∞ . Need a stop at a given point? You can make the stop rule explicit: say 1, 1, * + * ...^ * 100; Here we see the same sequence, but it stops as soon as the next number overcomes 100: (1 1 2 3 5 8 13 21 34 55 89) If you want to manipulate data a bit more elaborate than just taking the first few items, save the whole infinite list in a vari
  11. What is Raku++
    Aug 12, 2026 · original
    Raku++ is a compiler for the Raku programming language . It’s an independent implementation in C++ and its source code is located in the ash/rakupp repo on GitHub. Interpreter and Compiler Raku++ is both an interpreter and a compiler. You can pass your Raku program to the single rakupp binary: % cat hello.raku say 'Hello, World!'; % rakupp hello.raku Hello, World! In this mode, the program is parsed and executed in a single session — in the same manner as other script languages work with their interpreters. The second way to operate is to compile the program and run the binary: % rakupp --exe -o hello hello.raku Compiled (native) hello.raku - hello % ./hello Hello, World! Now you get a binary file hello , which you can ship without the need to have rakupp on the computer, where hello will be executed. Compactness Raku is a huge language, and if you are not using its full scale in a progr
  12. Live coding in Raku
    Aug 5, 2026 · original
    Raku.online now has the “Live” checkbox, which you can use to see the results of running your Raku program in real time. Below is the recording of solving the tasks of this week’s Weekly Challenge .
  13. Raku: a language that speaks Unicode
    Jul 30, 2026 · original
    Raku is by design a language that supports Unicode. So, yes, Unicode is special for both Raku and Raku++. This all starts from the visible surface, like when you can type Greek letters and use math symbols — even easier than you do it in LaTeX (in case you know how to type in non-ASCII characters). say τ; say ∞ 10⁹⁹; my \φ = (1 + sqrt 5) ÷ 2; say φ; say 2⁵; say 5 ∈ (2, 3, 5, 7); sub prefix:∑(@a) { [+] @a } say ∑(1, 2, 3); You can run this program in your browser to see how it works. You can also change it a bit to try other things. The above program was mostly about the characters that are available in the source code. But behind it, Raku knows the internal rules of the Unicode datasets, and the current Raku++ version comes with the embedded UCD 17 tables (Unicode Character Database). They are simply built in the source code, so all happens naturally. my $family = " "; say $family.chars;
  14. My Raku books online
    Jul 22, 2026 · original
    After finishing the Raku Course I decided that it would be great to publish all my books about Raku in a similar online format. You can still buy the books on Amazon, but you can also read it in a browser, and even run some code examples right there. So, The Complete Course of Raku , Raku One-Liners , Using Raku , Perl 6 Calendar , and Perl 6 at a Glance , — all are reachable in a click. I also added my other favourite work, Creating a Compiler in Raku , which was never (yet) published, but is now covering everything from the initial plan (while still in proofreading). Enjoy andrewshitov.com/raku-books ! An example of one of the pages. Easy to read, easy to test Raku. My Perl 6 Deep Dive is published by Packt, so it’s available from on their site in both paper and e-formats.
  15. Raku in a Browser
    Jul 20, 2026 · original
    Raku is a rich programming language; it took years to design and implement. That’s why running it in a browser seems an ambitious goal. Nevertheless, that’s mostly possible. Meet raku.online — a fully standalone Raku++ engine called Raku.js running in a browser. There are three main panels here: source code on the left, output panel on the right (both STDOUT and STDERR), and the input (STDIN) if needed below. Examples There are also a number of pre-defined examples that you can choose from to get familiar with Raku.js. For some of the examples, you can choose one of a few inputs to see how the program works in more detail. Among the examples on offer are most of the Raku programs from the examples directory of the Raku++ repository. These include some programs to manipulate strings and numbers, regex and grammar programs, sleep sort, and—of course!—mandel.raku, the program from the Parro
  16. Raku: a Language Where 0.1 + 0.2 is 0.3
    Jul 18, 2026 · original
    Programming languages are fascinating. Even if you think that these are the last days when you need to write code yourself, that only gives you more time to enjoy the beauty. In this article I would like to showcase some of the small but astonishing features of Raku. Even if you never had a chance to install a compiler on your machine, you can run all the examples below in the online Raku playground straight away. 0.1 + 0.2 == 0.3 It is an obvious equation when written on paper, but when you employ floating-point arithmetic, you get a collection of various answers – the price of the trade-off between speed, compactness, and exactness. In Raku, 0.1 + 0.2 equals 0.3 exactly: say 0.1 + 0.2 == 0.3; # True Run it in the online playground to confirm. In the rest of the article, the Raku code snippets are rendered inside the playground blocks. All you need is to press the Run button and see the
  17. The Complete Course of the Raku Programming Language
    Jul 15, 2026 · original
    I am excited to announce that the Complete Course of Raku is now complete. All five parts of the course have been written and published. The original table of contents was refreshed and updated to include a few new items, which are marked with the ‘NEW’ icon. The earlier-published Part 1 got some updates too, in particular, a few reworked exercises. Most of the course pages now display links to the official Raku documentation so that the reader can continue learning more deeply. The Course is still built with the idea of progressive learning, which means the material is always based only on previously taught topics. The front page was re-designed for easier navigation, as the TOC has grown so big. For quick access, the site is equipped with a search field. There are other subtle user-friendly improvements throughout the site, such as new pages for subsections, which were earlier just par
  18. Raku++: The Long Read
    Jul 15, 2026 · original
    How a from-scratch Raku compiler in C++ went from an empty directory to ~82% of the official test suite — plus a native code generator, a self-hosting toolchain, and a browser playground — in under three weeks. This is the long version of the story. The short version lives in the announcement ; the disciplined version lives in docs/dev/JOURNEY.md , which records the method rather than the narrative. This document is the narrative: what happened, in what order, what each round cost and returned, and why the numbers moved the way they did. Where it began I have been following Raku since it was Perl 6, and more than once over the years I tried to write a compiler for it. Every attempt stalled the same way. Raku is a large language — you start with say "Hello" and within an evening you are staring at grammars, junctions, multi-dispatch and the number tower, and you quietly close the editor.
  19. Raku++ — the fastest Raku compiler
    Jul 13, 2026 · original
    I have been following the development of the Raku programming language since the very beginning. It was Perl 6 for many years, and I had a dream to start using it in real projects. Honestly, I could, to some extent. The timeline for the last 20+ years was not linear at all, and had its own unexpected changes. After a hope with a quick Parrot, there was an unbelievably powerful Pugs and a few other projects. It was Rakudo that carried the language forward and became its leading implementation. It’s a massive project with great Raku coverage. I always wanted to create a Raku compiler myself. Over the years, I made a few half-serious attempts, but as the language is indeed huge, I soon understood it was not feasible. After the rename, around 2020, I thought we could approach some Big Tech companies to ask them to make an industrial compiler for us. Actually, I discovered recently, that I ev
  20. A Language a Day
    Nov 2, 2024 · original
    I published my new book: A Language a Day, which is a collection of brief overviews to 21 programming languages. This book provides a concise overview of 21 different programming languages. Each language is introduced using the same approach: solving several programming problems to showcase its features and capabilities. Languages covered in the book: C++, Clojure, Crystal, D, Dart, Elixir, Factor, Go, Hack, Hy, Io, Julia, Kotlin, Lua, Mercury, Nim, OCaml, Raku, Rust, Scala, and TypeScript. Each chapter covers the essentials of a different programming language. To make the content more consistent and comparable, I use the same structure for each language, focusing on the following mini projects: Creating a ‘Hello, World!’ program. Implementing a Factorial function using recursion or a functional-style approach. Creating a polymorphic array of objects (a ‘zoo’ of cats and dogs) and callin

Discovered by the rss-feed-index crawler, which checks each feed at most once a month.

Same record as JSON: https://api.agentalog.com/api/feeds/fd_andrewshitov_com_70146c8dad3c3d9d. More from this site: andrewshitov.com in the Feeds tab.