New
The latest blog posts to take off on Hacker News. 427 posts.
Nim in 2020: A Short Recap
A lot has happened in the Nim world in 2020: two new major releases, two new memory managements strategies (ARC and ORC), the first Nim conference, and much more.
How Python attributes work
What happens when we get or set an attribute of a Python object? This question is not as simple as it may seem at first. It is true that any...
SBCL: New in Version 2.1.0
New SBCL versions are usually released at the end of each month: check the Sourceforge File List to see the current version. The new features of all SBCL releases are listed below.
Cider 1.0
You can’t really know where you are going until you know where you have been. – Maya Angelou CIDER started its life as an effort to replace a hacked version of SLIME1 with a proper environment for Clojure development on Emacs. Many of you probably don’t remember those days, but initially almost everyone was using a…
Ruby 3.0 and the new FiberScheduler interface
A few days ago on Christmas day 2020, Matz released Ruby 3.0. Like every year, a host of interesting new features was included with the new version. Most articles I have read so far focus more on the new ways to introduce type hints and the Ractor system but for me the most interesting addition was the introduction of…
A Complete Guide to LLVM for Programming Language Creators
We'll explain the concepts underlying LLVM IR, and how you can use the LLVM C++ API in your programming language's compiler.
Ruby 3.0
We are pleased to announce the release of Ruby 3.0.0. From 2015 we developed hard toward Ruby 3, whose goal is performance, concurrency, and Typing. Especial...
In CPython, types implemented in C are part of the type tree
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
I rewrote a Clojure tool in Rust
About two years ago, I wrote a quite complicated diff tool in Clojure. It was complicated enough that I struggled to fit the algorithm in my head and the inputs were large enough that I had to make some efforts to improve performance.
Ruby 3.0.0 RC1
We are pleased to announce the release of Ruby 3.0.0-rc1.
Cakelisp: A Programming Language for Games
Update: See the Hacker News thread , /r/programming , /r/ProgrammingLanguages , /r/gamedev , and /r/lisp posts for discussions on this article and Cakelisp.
Pointers Are Complicated II, or: We need better language specs
Some time ago, I wrote a blog post about how there’s more to a pointer than meets the eye. One key point I was trying to make is that just because two pointers point to the same address...
A Defer Mechanism for C
An overview of a paper that presents a reference implementation of a defer mechanism (co-authored with Robert C. Seacord) has been accepted for publication at SAC’21. The full version is avai…
Zig 0.7.1 Released – 69 bugs fixed
Zig is a general-purpose programming language and toolchain for maintaining robust , optimal , and reusable software.
Implementing Rust's dbg! in Python
Rust has an amazing dbg macro that lets you quickly set up an expression printer that will also put in the source line. It also returns the value of the expression so you can even easily inline the printing when you want to!
ORC – Nim's new memory managment
ORC - Algorithmic Advantages
Where Did Combinators Come From? Hunting the Story of Moses Schönfinkel
A dive into the unknown personal and academic history of the mathematician who developed combinators, Moses Schönfinkel.
R adds native pipe and lambda syntax
‘all.equal(f, g)’ for ‘function’s now by default also compares their ‘environment(.)’s, notably via new ‘all.equal’ method for class ‘function’. Comparison of ‘nls()’ fits, e.g., may now need ‘all.equal(m1, m2, check.environments=FALSE)’.
Between two Lisps
Out of all Lisps the ones I’ve come to appreciate the most are Scheme and Common Lisp.