Type systems: coercion, casts, and conversions

Programming language designers and users spend a lot of time talking about casts. The core idea of a cast is to convert between two types – either statically, or dynamically. Reading through a number of sources recently, I’ve been noticing that the term “cast” is massively overloaded. This blog post is an attempt to break …

Continue reading ‘Type systems: coercion, casts, and conversions’ »

Typesetting formal semantics in LaTeX

For my programming language theory and design course, I’ve recently been writing up a series of formal proofs in LaTeX for operational and denotational language semantics. (Axiomatic semantics are up next.) I can’t claim to particularly like LaTeX as a tool, but it seems to be significantly better than anything else out there. I couldn’t …

Continue reading ‘Typesetting formal semantics in LaTeX’ »

OpenCL Performance Gotcha w/Atomics (in global memory)

One of the lesser documented facts about the OpenCL global memory atomics on AMD platforms, is they force all memory accesses in the entire program onto the complete (i.e, slow) path. Having even a single atomic in your program has this effect. In our program – which we’re developing for a research project I hope …

Continue reading ‘OpenCL Performance Gotcha w/Atomics (in global memory)’ »