RSSAmplifier

Blog

Michael J. Sullivan's Blog

msully.netRSS feed ↗9 posts

Latest posts

Several Compilers for Unlambda

Introduction Unlambda is a venerable part of the esoteric programming languages canon. Billed as Your Functional Programming Language Nightmares Come True”, Unlambda big distinction from most prior esolangs is that it is functional and based on a combinator calculus. Much of the focus on the Unlambda page is on how to implement Unlambda, and it [ ]

MicroKanren (μKanren) in Haskell

Our PL reading group read the paper μKanren: A Minimal Functional Core for Relational Programming this week. It presents a minimalist logic programming language in Scheme in 39 lines of code. Since none of us are really Schemers, a bunch of us quickly set about porting the code to our personal pet languages. Chris Martens [ ]

Parallelizing compiles without parallelizing linking – using make

I have to build LLVM and Clang a lot for my research. Clang/LLVM is quite large and takes a long time to build if I don t use -j8 or so to parallelize the build; but I also quickly discovered that parallelizing the build didn t work either! I work on a laptop with 8gb of RAM [ ]

The x86 Memory Model

Often I ve found myself wanting to point someone to a description of the x86 s memory model, but there wasn t any that quite laid it out the way I wanted. So this is my take on how shared memory works on multiprocessor x86 systems. The guts of this description is adapted/copied from A Better x86 Memory [ ]

Forcing memory barriers on other CPUs with mprotect(2)

I have something of an unfortunate fondness for indefensible hacks. Like I discussed in my last post, RCU is a synchronization mechanism that excels at protecting read mostly data. It is a particularly useful technique in operating system kernels because full control of the scheduler permits many fairly simple and very efficient implementations of RCU. [ ]

Why We Fight

Why We Fight, or Why Your Language Needs A (Good) Memory Model, or The Tragedy Of memory_order_consume s Unimplementability This, one of the most terrifying technical documents I ve ever read, is why we fight: https://www.kernel.org/doc/Documentation/RCU/rcu_dereference.txt. Background For background, RCU is a mechanism used heavily in the Linux kernel for locking around read-mostly data…

End of summer Rust internship slides from 2011-2013

Slides from my end of summer talks for all of my Rust internships. (This post heavily backdated and the slides are hilariously out of date.) 2011 Closures for Rust 2012 Vector Reform and Static Typeclass Methods 2013 Default Methods in Rust

Inline threading for TraceMonkey slides

Here are the slides from my end of summer brown-bag presentation: http://www.msully.net/~sully/files/inline_slides.pdf.

Doing whole tree analysis with Dehydra

Introduction In this post I discuss how I used Dehydra to do analysis of the entire Tracemonkey tree. Note I talk briefly about some Tracemonkey things to motivate what I used Dehydra for, but a knowledge of Tracemonkey is not required to appreciate the main point of this post. The problem One of the optimizations [ ]