news
Programming Leftovers
-
The New Stack ☛ Statistical language R is making a comeback against Python
The latest iteration of the TIOBE Index of programming languages indicates that more specialized languages are creeping up on Python’s dominance.
Although Python remains the most popular programming language, the index suggests that several more specialized languages are gradually gaining ground at Python’s expense, most notably R and Perl.
-
SICP ☛ Happy 25th birthday to the manifesto for agile software development!
11th-13th February 2001 is the occasion of the most famous skiing holiday in software. Don’t take my word for it; Jim Highsmith was there and wrote the history.
It’s pretty astounding that, in a field where everyone tries to remind each other that things move at breakneck pace (though that speed is mostly reserved for those reminders), a website with four substantive text-only pages is still relevant and still widely cited. I’m never going to create as comprehensive or as balanced a critique as Bertrand Meyer, but there are still various important points about the manifesto that are worth discussing.
-
Andrew Nesbitt ☛ The Many Flavors of Ignore Files
A bug report in git-pkgs led me down a rabbit hole: files that git ignored were showing up as phantom diffs, and the cause turned out to be go-git’s gitignore implementation, which doesn’t match git’s actual behavior for unanchored patterns in nested directories. I went looking for a Go library that fully matched git’s pattern semantics and couldn’t find one, so I wrote git-pkgs/gitignore with a wildmatch engine modeled on git’s own wildmatch.c.
Building that made me appreciate how much complexity hides behind .gitignore, and got me thinking about all the other tools with their own ignore files. Most claim to use “gitignore syntax” without specifying which parts, and that phrase turns out to be doing a lot of work. Every tool wants to be git until it has to implement git’s edge cases.
-
Anton Zhiyanov ☛ Allocators from C to Zig
An allocator is a tool that reserves memory (typically on the heap) so a program can store its data structures there. Many C programs use the standard libc allocator, or at best, let you switch it out for another one like jemalloc or mimalloc.
Unlike C, modern systems languages usually treat allocators as first-class citizens. Let's look at how they handle allocation and then create a C allocator following their approach.
-
Calyx Institute ☛ Lessons from CalyxOS signing process redesign
Code signing is commonly used to cryptographically verify the origin of software. A typical Android build consists of many individually signed pieces, which requires a significant amount of signing keys. Among these keys, the most important is used for verified boot, which establishes a full chain of trust for all parts of the operating system.
Each key comes in two parts: the certificate and the private key. Developers use the private keys to make the cryptographic signatures, which need to be stored somewhere. This is typically a file on a storage medium. However, if anyone gets a copy of that file they can make valid signatures indefinitely and there is no way to stop them. It is impossible to verify where there are any copies of the key file, where they exist, or who has access to them. That is quite a risk. It also makes giving more than one person access to the keys quite challenging and thus is bad for your bus factor.
-
Shell/Bash/Zsh/Ksh
-
Extract Microsoft's proprietary prison GitHub repository URLs from BlackArch tools pages
-
Hackaday ☛ Bash Via Transpiler
It is no secret that we often use and abuse bash to write things that ought to be in a different language. But bash does have its attractions. In the modern world, it is practically everywhere. It can also be very expressive, but perhaps hard to read.
-
-
Java/Golang
-
Filippo Valsorda ☛ Inspecting the Source of Go Modules
Go has indisputably the best package integrity story of any programming language ecosystem. The Go Checksum Database guarantees that every Go client in the world is using the same source for a given Go module and version, forever.
-
-
Rust
-
Rust Weekly Updates ☛ This Week In Rust: This Week in Rust 638
Hello and welcome to another issue of This Week in Rust!
-
Rust Blog ☛ The Rust Programming Language Blog: Announcing Rust 1.93.1
The Rust team has published a new point release of Rust, 1.93.1. Rust is a programming language that is empowering everyone to build reliable and efficient software.
-