Compiling Pattern Matching
This post intends to provide a brief overview of the algorithm described in Luc Maranget’s “ Compiling Pattern Matching to Good Decision Trees ”.
This post intends to provide a brief overview of the algorithm described in Luc Maranget’s “ Compiling Pattern Matching to Good Decision Trees ”.
The following is a loose collection of thoughts that came up while porting unsafe-libyaml to safe, idiomatic Rust, which may be useful to someone else who is considering "rewriting it in Rust", as the ancient journeyman prayer goes.
In my off time (and my on time, for that matter) I've been working on this quirky thing I've called Scinamalink (sounds like 'skinamarink'). Scinamalink lets customers send Magic login links to their users with a single REST API call. If you don't know what a magic
Some C++ folk seem to think so, but they're wrong!
I was just chatting with Ben Titzer on Twitter about control flow in his Virgil language (which is cool and you should definitely check ...
I’ve noticed a small but interesting trend in the programming languages space. I’m not sure how novel it is, but this pattern, which I’ll refer to as “biphasic programming,” is characterized by languages and frameworks that enable identical syntax to express computations executed in two distinct phases or environments…
This will be the first in a series of posts describing different design decisions made writing two Rust crates:
Author: Eduardo Ochs eduardoochs@gmail.com https://anggtwu.net/ https://www.lua.org/gems/ https://www.lua.org/gems/selected.html Version: 2008feb17 Listings: http://anggtwu.net/miniforth/miniforth5.lua http://anggtwu.net/miniforth/miniforth5.out Preprint version: https://anggtwu.net/miniforth/miniforth-article.pdf
OCaml's let … = … in … is very confusing. When nested, you can't tell how it's nested.
An expose on Implicits and Local Coherence
Parenthetically Speaking: Articles by Shriram Krishnamurthi
Or: The Most Expensive Linked List I’ve Ever Written
Scheme to the Spec is a series on the more complex, often overlooked aspects of programming language implementation.
In my last post I floated the idea of writing a slow, edit-prone shell script instead as a self-rebuilding C program.
All the “C++ killers”, even these which I wholeheartedly love and respect like Rust, Julia, and D, help you write more features with fewer bugs, but they don't much help when you need to squeeze the very last FLOPS from the hardware you rent. As such, they don’t have a competitive advantage over C++. Or, for that…
Updated (2014-10-24): If you find this article interesting, you may be interested in the follow-up article on an editor for composed programs .
In the early-to-mid 2010s, there was a renaissance in languages exploring new ways of doing concurrency. In the midst of this renaissance, one abstraction for achieving concurrent operations that was developed was the “future” or “promise” abstraction, which represented a unit of work that will maybe eventually…
A deep dive into Rust’s vec::Drain and its Drop implementation as an example of how ownership prevents subtle bugs—memory and otherwise!
Learnings from building MiniJinja, a template engine in Rust
This blog post explores an alternative formulation of Rust’s type system that eschews lifetimes in favor of places . The TL;DR is that instead of having 'a represent a lifetime in the code, it can represent a set of loans , like shared(a.b.c) or mut(x) . If this sounds familiar, it should, it’s the basis for polonius…
How is tail recursion different from regular recursion? What do continuations have to do with this, what is CPS, and how do trampolines help? This article provides an introduction, with code samples in Python and Clojure.
Recently, we had a discussion in our team about undefined behaviour (UB) in C. For those unfamiliar: We say that a program has undefined behaviour when we write code where the language specification doesn't define what should happen during execution. That means compilers can do whatever they like if they encounter…
Overture to our small Lisp to x86-64 compiler
Good development practices for modern Python
Smaller programs that do less work.
Many years ago, Kragen complained about the implementation and performance of Java regexes , and suggested that an implementation that emitted JVM bytecode could perform better. It's been a minute, but I'm happy to report that complaining on the Internet has served its purpose.