A Primer on Logic Programming
Getting a kickstart in the logic programming world with Prolog
The latest blog posts to take off on Hacker News. 390 posts.
Getting a kickstart in the logic programming world with Prolog
Try to spot who liked hacking away at corpses rather than computers
Introduce an API by which Java programs can interoperate with code and data outside of the Java runtime. By efficiently invoking foreign functions (i.e., code outside the JVM), and by safely accessing foreign memory (i.e., memory not managed by the JVM), the API enables Java programs to call native libraries and…
Facets of Prolog
Summary In this post I’ll go into detail about how, during my contracting work for Shimmer Industries (a company founded by Eskil Steenberg which is focused on developing a real-time lighting designing software), I worked on a piece of software which enabled us to use the MacOS and iOS APIs using a custom C API…
I've been floating ways to simplify the memory management story in Rust around the core team lately. Memory management is a contentious topic, since we've worked hard to get to the current state of things, and with the push toward stability lately, there is a (quite reasonable!) resistance to any changes at this…
Amiga C Tutorial
I write compilers for fun. I can’t help it. Consequently, I also write a lot of parsers. In systems programming, it’s usually a good idea to try to share memory rather than reuse it, so as such my AST types tend to look like this.
Welcome to Learning Zig, an introduction to the Zig programming language. This guide aims to make you comfortable with Zig. It assumes prior programming experience, though not in any particular language.
I’ve been programming in Clojure for a long time, but I haven’t been using transducers much. I learned to mechanically transform (into [] (map f coll)) to (into [] (map f) coll) for a slight performance gain, but not much beyond that. Recently, however, I’ve found myself refactoring transducers-based code at work…
C came into being in the years 1969-1973, in parallel with the early development of the Unix operating system; the most creative period occurred during 1972. Another spate of changes peaked between 1977 and 1979, when portability of the Unix system was being demonstrated. In the middle of this second period, the first…
Yet another programming blog. Thoughts on software and related misadventures.
In C++20, string and vector are marked constexpr, which means they’re somewhat usable in compile-time programming. For example, we can write:
Elixir is a language with syntactical roots in Ruby. It also carries the Erlang legacy. Legacy used here as in "a great legacy" and not as in "system you don't like anymore". Ruby is an object-oriented language. Elixir is functional language. The Erlang part has an impact as Elixir was designed to provide strong…
Since our launch of the Mojo programming language on May 2nd, more than 120K+ developers have signed up to use the Mojo Playground and 19K+ developers actively discuss Mojo on Discord and GitHub. Today, we’re excited to announce the next big step in Mojo’s evolution: Mojo is now available for local download …
Replacing an internal Node.js module with a native Rust module made a x25 perf boost. Let’s understand why.
God famously does not play dice with the universe, but he seems to enjoy writing Haskell :
By all accounts, TypeScript has been a big success for Microsoft. I've seen loads of people sparkle with joy from dousing JavaScript with explicit types that can be checked by a compiler. But I've never been a fan. Not after giving it five minutes, not after giving it five years. So it's with great pleasure that I can…
Blog about linguistics, programming, and my projects
Patterns to use types for better safety and design
This post will show you how to use D to write a bare-metal “Hello world” program that targets the RISC-V QEMU simulator. In a future blog post ( now available ) we’ll build on this to target actual hardware: the VisionFive 2 SBC. See blog-code for the final code from this post. For a more complex example, see…
A recent Twitter thread brought home to me that there is widespread confusion about what types actually are, even among the most prominent researchers. In particular: are types the same thing as sets ? At the risk of repeating some of my prior posts, perhaps it’s time for a little history about type theory, set theory…
In this edition of the newsletter, we direct our attention to one of the most prominent highlights of the summer: the release of the Llama 2 base and chat models, as well as CodeLlama, the latest highlights in the open-source AI large language model (LLM) landscape.
In this article, I describe my journey creating a barely functional rust backend enabling compilation for the .NET runtime (Usually used to run C# and F#).
( This is part of a series on the design of zest . See the list of posts here .)
Go 1.21 is the first perfectly reproducible Go toolchain.
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 the two most recent SBCL releases are listed below.
UPDATE: Wow, this post has gotten popular! I’ve written a new post that adds new papercuts combined with concrete suggestions for how C++ could improve, if you are interested. Also, if you want to read more about C++’s deeper-than-papercut issues, I recommend specifically my post on its move semantics. Thank you for…
In the following series of blog posts I will document my attempts to write Linux modules using the Ada language. In part 1, I will demonstrate how to write in Ada and build a simple "hello world" Linux kernel module. Additionally, I will introduce a basic customized Ada runtime to support our "hello world" module…