From Java code to Java heap (2012)
The Java programming language is a high-level, object-oriented language. It is rapidly evolving across several fronts to simplify and accelerate development of modern applications.
The Evolution of a Haskell Programmer (2001)
Some time later, I came across Iavor’s "jokes" page, including a funny bit called “ The Evolution of a Programmer ” in which the traditional imperative "Hello, world" program is developed through several variations, from simple beginnings to a ridiculously complex extreme. A moment’s thought turned up the factorial…
Measuring GC latencies in Haskell, OCaml, Racket
James Fisher has a blog post on a case where GHC's runtime system imposed unpleasant latencies on their Haskell program: Low latency, large working set, and GHC's garbage collector: pick two of three The blog post proposes a very simple, synthetic benc...
Introducing MLFE: ML-Flavoured Erlang
What ML-Flavoured Erlang is a statically typed language with basic parametric polymorphism (generics) for the Erlang VM that I’ve been hacking …
Rust for Web
RESTful API in Rust, impressions
Functors, Applicatives, and Monads in Plain English
Functors, Applicatives, and Monads in Plain English - This is a no-bullshit zone
Rust via its Core Values
I have a couple of ideas about learning programming languages. The first is that we do it wrong. I’m sure you’ve experienced this. You try learning a new language and can’t quite see how it all works. Why do I use this syntax here and some other syntax over here? We get frustrated by all the weird bits and go back to…
Non-Lexical Lifetimes in Rust
Over the last few weeks, I’ve been devoting my free time to fleshing out the theory behind non-lexical lifetimes (NLL). I think I’ve arrived at a pretty good point and I plan to write various posts talking about it. Before getting into the details, though, I wanted to start out with a post that lays out roughly how…
A better inliner for OCaml, and why it matters
OCaml 4.03 is branched and a first release candidate is imminent, so it seems like a good time to take stock of what’s coming.
Let’s Run Lisp on a Microcontroller
I was inexplicably amazed by Lisp since the first day I've seen how Lisp programs look.
Why OCaml? [video]
Here’s a post from a talk I gave this last summer during our internship program about why we use OCaml. It spends a lot of time on how OCaml fits into the space of programming language designs, and why we think OCaml is in a real sweet spot in that design space, especially for the kind of work we do at Jane Street.
Typed, modular macros for OCaml
As part of my OCaml Labs research project, I implemented a new macro system for OCaml, based on a design by Leo White and Jeremy Yallop [1] .
Code behaving differently in C90, C99, C11, C++98, and C++11
There are some subtle differences between the revisions of the C standard that makes it possible to create programs that behaves differentl...
Exponential time complexity in the Swift type checker
One of the most annoying problems in Swift is when the compiler gives an 'Expression was too complex to be solved in a reasonable time' error. I look at why this error occurs, how to avoid it and talk about how this should be solved in a future compiler update.
Visualizing parallel requests in Elixir
Codemancers is an AI-first engineering and product studio. We design, build, and ship intelligent products — combining deep software craftsmanship with modern AI to solve real-world problems at scale.
Red Programming Language: 0.6.0: Red GUI System
Five years ago, when I started writing the first lines of code of what would become later the Red/System compiler, I had a pretty good pictu...
A new year resolution to have Crystal reach the 1.0 milestone in 2017
Crystal has gone a long way since we started it over five years ago. What was once an experiment to see if it was possible to have a compiled yet Ruby-like language, is now a trending language with over 7,000 GitHub stargazers and almost 1,400 shards. Its popularity has risen considerably in the last few years, and we…
C++17 and other future highlights of C++
Welcome to the 3rd and last part about current proposals for C++17 and beyond. In the last part, there was an overview on the current Technical Specifications, most likely to move into C++ after C++17 . The full proposal listing of 2016 sorted by subgroups contains many more proposals then I can cover.
Adventures in the land of substrings and RegExps
Few weeks ago a bug was filed against Dart SDK citing "very low performance of String.substring " . Here is a core of microbenchmark developer submitted together with the issue:
The Next Five Years of ClojureScript
I delivered a talk at the well attended ClojuTRE conference in Tampere, Finland this past September titled "The Next Five Years of ClojureScript". The Clojur...