news
Programming Leftovers
-
Max Bernstein ☛ Zero-overhead checks with fake stack overflows
Instead of locking these components so that only one thread can use those shared resources at a time, runtime implementors tend to instead shard them: each thread gets its own slice to work with privately.
This means that each thread might have a separate mini-heap that it can use privately until exhaustion, and only then request a stop-the-world event. But how do we indicate that all threads should stop?
-
Buttondown LLC ☛ What does "Undecidable" mean, anyway
I'll be speaking at Systems Distributed next month! The talk is brand new and will aim to showcase some of the formal methods mental models that would be useful in mainstream software development. It has added some extra stress on my schedule, though, so expect the next two monthly releases of Logic for Programmers to be mostly minor changes.
-
Rlang ☛ A Pace Far Different: finding best running pace with R
Strava and other fitness tracking software will find your best time for a given distance within your activities, but here we’ll use R. We’ll look at the data first. Scroll down or click here to see the code.
-
Sandor Dargo ☛ Three types of name lookups in C++ | Sandor Dargo's Blog
Let’s get back to some basics this week and talk about name lookups in C++. In other words: when you refer to a symbol in your code, how does the compiler find it?
Essentially, we can differentiate between three kinds of lookups: [...]
-
Juha-Matti Santala ☛ As a developer, my most important tools are a pen and a notebook
When it comes to building software or solving problems, writing code is the necessary bit at the end where we tell the computer what to do but way more important than writing that code is figuring out what code to write.
I learned very early on in my career that I’m not very good at thinking when I’m at a computer. When I have my code editor open, I’m in a “function mode” where I write stuff that does something. When my brain hits that mode, there’s not much creative energies flowing around.
-
Python
-
LWN ☛ Recent disruptive changes from Setuptools
In late March, version 78.0.1 of Setuptools — an important Python packaging tool — was released. It was scarcely half an hour before the first bug report came in, and it quickly became clear that the change was far more disruptive than anticipated. Within only about five hours 78.0.2 was published to roll back the change, and multiple discussions were started about how to limit the damage caused by future breaking changes. Nevertheless, many users still felt the response was inadequate. Some previous Setuptools releases have also caused problems on a smaller but still notable scale, and hopefully the developers will be more cautious going forward. But there are also lessons here for the developers of Python package installers, ordinary Python developers and end users, and even Linux distribution maintainers.
-
-
Java/Golang
-
Ted Unangst ☛ go may require prefaulting mmap
go exposes mmap via syscall.Mmap wrapper. There’s also a dozen other “friendly” wrapper, though I found the syscall package version quite sufficient. Easy to use, let’s do it. Done.
-
The New Stack ☛ How Java Sparked an Open Source Revolution 30 Years Ago
However, Java changed everything. The introduction of Java ARchive (JAR) files created easily consumable modules, while Maven‘s arrival made dependency management possible. Suddenly, developers could understand and manage the complex web of dependencies that came with any significant library — those “15 or 100 other things” needed to make a single JAR file work. Maven is a project management and build automation tool used primarily for Java projects.
“I distinctly remember the first time I was actually able to build an open source project,” Fox said. “You could look at the code and say, ‘I want to change it this way,’ but you might spend a week just trying to figure out how to build something.”
The impact was transformative. By lowering barriers to entry, Java enabled a generation of developers to contribute to open source projects. The language’s modularity and portability, combined with Maven’s standardized approach to dependencies, created a blueprint that would influence other programming languages that followed, Fox said.
-