Programming Leftovers


-
Promotion: Knight's Challenge
A coding puzzle for “The Weekly Challenge ‐ Perl & Raku” I made has been released this week!
You have 46- hours to play with it if you align with official deadline. It probably spends you 2~5 hours in this weekend. Beware! Doing the bonus part may spend you a block of extra 2 hours or more.
I wish more people will participate and show different approaches to the task. (And, may the participant gives me some feedback as a puzzle creator?)
-
On tail calls and register allocation
Josh Haberman has a blog post on using tail calls to speed up interpreters and parsers, with protobuf (upb) as a case study. It's a brilliant insight, and I believe one of the most significant developments of high-performance C over the last decade. (The super-short TL;DR is to use the argument registers as fixed storage for important variables, and write each function so that it essentially becomes a basic block with no prologue. It's mostly applicable for code where you have very complex and unpredictable control flow stemming from input data, where the compiler's register allocation and basic block layout generally doesn't do too well.) However, there are some practical considerations around register allocation that I don't believe Haberman addresses fully, so I'd like to expand a bit.
The background is that Rune Holm wrote a series of interpreters for a toy bytecode language, as investigations for the https://github.com/captain-amygdala/pistorm (based on Musashi). It turned out that the tail call technique worked great for x86 and Aarch64 (Apple M1), but much worse on the target platform of Cortex A53 (in 32-bit mode).
It turns out that the tail call technique requires the compiler to never ever use a callee-saved register; if you used e.g. r5, the Arm EABI requires you to save that so that it's preserved as viewed from the caller, and then you get the function prologue that you wanted to avoid. Now, the caller doesn't care much about r5, since it's just tail-calling into you anyway, but the compiler cannot know that; the ABI generally has to be followed.
-
RapidDisk 7.2.1 now available
RapidDisk is an advanced Linux RAM Disk which consists of a collection of modules and an administration tool. Features include: Dynamically allocate RAM as block device. Use them as stand alone disk drives or even map them as caching nodes to slower local disk drives.
-
The State of Python Packaging in 2021 | Bastian Venthur's Blog
Every year or so, I revisit the current best practices for Python packaging. I.e. the way you’re supposed to distribute your Python packages. The main source is packaging.python.org where the official packaging guidelines are. It is worth noting that the way you’re supposed to package your Python applications is not defined by Python or its maintainers, but rather delegated to a separate entity, the Python Packaging Authority (PyPA).
-

- Login or register to post comments
Printer-friendly version- 4236 reads
PDF version
More in Tux Machines
- Highlights
- Front Page
- Latest Headlines
- Archive
- Recent comments
- All-Time Popular Stories
- Hot Topics
- New Members
digiKam 7.7.0 is released
After three months of active maintenance and another bug triage, the digiKam team is proud to present version 7.7.0 of its open source digital photo manager. See below the list of most important features coming with this release.
|
Dilution and Misuse of the "Linux" Brand
|
Samsung, Red Hat to Work on Linux Drivers for Future Tech
The metaverse is expected to uproot system design as we know it, and Samsung is one of many hardware vendors re-imagining data center infrastructure in preparation for a parallel 3D world.
Samsung is working on new memory technologies that provide faster bandwidth inside hardware for data to travel between CPUs, storage and other computing resources. The company also announced it was partnering with Red Hat to ensure these technologies have Linux compatibility.
|
today's howtos
|








.svg_.png)
Content (where original) is available under CC-BY-SA, copyrighted by original author/s.

Recent comments
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago
1 year 11 weeks ago