Value Type Hygiene
Briefly put, types in L-world are ambiguous, leading to unhygienic mixtures of value operations with reference operations, and uncontrolled pollution from null s infecting value code.
The latest blog posts to take off on Hacker News. 5,636 posts.
Briefly put, types in L-world are ambiguous, leading to unhygienic mixtures of value operations with reference operations, and uncontrolled pollution from null s infecting value code.
Mark Karpov wrote in his article on Migrating text metrics to pure Haskell how he originally did foreign calls out to C for many of the functions in his text metric package, but now ported them to Haskell when he learned that Haskell can give you performance comparable to C.
wingolog: article: lightweight concurrency in lua
This post is fairly old. See the updated version Starting a Go project in 2023 Getting started with a Go project in 2018 is frankly a little more painful then getting anything else started IMHO. With …
Michael Snoyman's personal homepage and blog, featuring writing about programming, open source, health, finance, religion, and whatever else catches his interest.
My six-year-old son walked up to me yesterday. “What are you reading?” At the time, I was reading part of Janis Voigtländer’s habilitation thesis. Unsure where to even start, I decided to just ans…
The official home of the Erlang Programming Language
After we published this paper, Matthias Hauswirth kindly pointed out similarities between this work and the PL-detective , a body of work that is very closely related that we did not previously know. Less similar but also related---and entertainingly written up---is smeagol . Since we published the paper, we have…
Last week was the release of Oracle’s GraalVM. As stated on the website: GraalVM is a universal virtual machine for running applications written in JavaScript, Python 3, Ruby, R, JVM-based languages like Java, Scala, Kotlin, and LLVM-based languages such as C and C++. GraalVM removes the isolation between programming…
The official home of the Erlang Programming Language
So far this year I’ve been bitten three times by compiler edge cases in GCC and Clang, each time catching me totally by surprise. Two were caused by historical artifacts, where an ambiguous specification lead to diverging implementations. The third was a compiler optimization being far more clever than I expected…
One of the biggest open questions for migrating to Scala 3 is what to do about macros. In this blog post we give our current thoughts. The gist is that we are trying to achieve full alignment between macros and Tasty.
18 months ago I wrote about some work I did to speed up the Rust compiler (rustc). I’ve recently taken this work up again. Also, in the meantime rustc’s build system has been replaced and its benchmark suite has been overhauled. So it’s a good time for an update.
Describing three strategies of implementing type classes, aiming to clarify their behavior
The newly-released GraalVM changes the status quo in the realm of JVM-based programming languages. In this instalment we’ll explore its impact on Clojure. We’ll start small, but by the end we’ll compile an entire Ring web application into a self-contained native binary.
Go’s new look and logo (don't worry, the mascot isn’t changing!).
(This essay is from the introduction to On Lisp .) It's a long-standing principle of programming style that the functional elements of a program should not be too large. If some component of a program grows beyond the stage where it's readily comprehensible, it becomes a mass of complexity which conceals errors as…
Union types are powerful yet often overlooked. At work, I've been using Flow which thankfully supports union types. But as I've refactored more of our code to use union types, I've noticed that our bundle size has been steadily increasing!
Now that Scala 2.13 is only a few months away, it’s time to consider the roadmap beyond it. It’s been no secret that the work on Dotty over the last 5 years was intended to explore what a new Scala could look like. We are now at a stage where we can commit: Dotty will become Scala 3.0.
Python 3.7 is set to be released this summer, let’s have a sneak peek at some of the new features! If you’d like to play along at home with PyCharm, make sure you get PyCharm 2018.1 (or later if you’r
Introducing wasm-pack, a new tool for assembling and packaging Rust crates that target WebAssembly. These packages can be published to the npm Registry and used alongside other packages. This means ...
In India, Panini creates an exact description of the Sanskrit language, including pronunciation. Sanskrit can be completely reconstructed using nothing but Panini's grammar. Panini's grammar, which predates Euclid, is probably the first formal system of any kind. In the future, nothing like it will exist for any other…