Autovectorization seems like a cool way to write cross platform SIMD code. But does anyone know of solutions to the insight issue? If I were to write a function which relies on autovectorization, wouldn't I literally have to 1) compile with every compiler + compiler settings + CPU arch + platform I wanna support, 2) disassemble all resulting binaries, 3) read analyze the assembly code to verify that it's vectorized how I expect, and 4) repeat for every change?
Autovectorization seems like a cool way to write cross platform SIMD code. But does anyone know of solutions to the insight issue? If I were to write a function which relies on autovectorization, wouldn't I literally have to 1) compile with every compiler + compiler settings + CPU arch + platform I wanna support, 2) disassemble all resulting binaries, 3) read analyze the assembly code to verify that it's vectorized how I expect, and 4) repeat for every change?
I wrote the fifth part of my #blog series “Implementing Co, a small programming language with #coroutines”. This time, we add support for sleep in #Co for time-based executions. https://abhinavsarkar.net/posts/implementing-co-5/
#Programming #PLT #ProgrammingLanguages #Compilers #Haskell #concurrency
I wrote the fifth part of my #blog series “Implementing Co, a small programming language with #coroutines”. This time, we add support for sleep in #Co for time-based executions. https://abhinavsarkar.net/posts/implementing-co-5/
#Programming #PLT #ProgrammingLanguages #Compilers #Haskell #concurrency
For Krabby (my very-very-WIP Rust compiler), I did find a sensible use case for my parallel name resolver; a query on thread A ("look up core::iter::Iterator") can depend on a query being processed by thread B ("parse core/iter.rs"). Small atomics + a concurrent hash table lets me detect such conflicts, but I don't want to block the thread when this happens (parsing can take a while); instead, the hash table lets thread A pass on its work to thread B, to execute when its query finishes. Thread A will simply report "the query would block, come back later" and move on to other stuff. Once thread B is done, it will re-enqueue the blocked work. I'm excited to implement this, it's going to be so cool!
For Krabby (my very-very-WIP Rust compiler), I did find a sensible use case for my parallel name resolver; a query on thread A ("look up core::iter::Iterator") can depend on a query being processed by thread B ("parse core/iter.rs"). Small atomics + a concurrent hash table lets me detect such conflicts, but I don't want to block the thread when this happens (parsing can take a while); instead, the hash table lets thread A pass on its work to thread B, to execute when its query finishes. Thread A will simply report "the query would block, come back later" and move on to other stuff. Once thread B is done, it will re-enqueue the blocked work. I'm excited to implement this, it's going to be so cool!
⏱️ Constant-time support lands in LLVM: Protecting cryptographic code at the compiler level
#llvm #compilers #security #computing #software #sidechannels #cyber
⏱️ Constant-time support lands in LLVM: Protecting cryptographic code at the compiler level
#llvm #compilers #security #computing #software #sidechannels #cyber
When Compilers Surprise You
https://xania.org/202512/24-cunning-clang
#HackerNews #When #Compilers #Surprise #You #compilers #programming #clang #developer #insights #coding #surprises
Between 1988 and 1995 Jack Crenshaw posted on Usenet "Let's Build a Compiler", a tutorial series on writing a Pascal compiler that generates 68K Assembly. 35 years later Eli Bendersky revisited the series and rewrote the compiler in Python to generate WebAssembly.
https://eli.thegreenplace.net/2025/revisiting-lets-build-a-compiler
Between 1988 and 1995 Jack Crenshaw posted on Usenet "Let's Build a Compiler", a tutorial series on writing a Pascal compiler that generates 68K Assembly. 35 years later Eli Bendersky revisited the series and rewrote the compiler in Python to generate WebAssembly.
https://eli.thegreenplace.net/2025/revisiting-lets-build-a-compiler
Some of the books I have written in the past 30 years. Some are not in the stack, some are not even on my homepage (http://t3x.org), some are out of print. I have lost track over the years. It has been quite a journey, though.
#books #writing #LISP #compilers #yoga #buddhism #sciencefiction
Some of the books I have written in the past 30 years. Some are not in the stack, some are not even on my homepage (http://t3x.org), some are out of print. I have lost track over the years. It has been quite a journey, though.
#books #writing #LISP #compilers #yoga #buddhism #sciencefiction
My first fifteen compilers (2019)
https://blog.sigplan.org/2019/07/09/my-first-fifteen-compilers/
#HackerNews #MyFirstFifteenCompilers #Compilers #Programming #Blog #Post #DeveloperJourney
💡Titania Programming Language
「 Based on the Oberon-07 programming language designed by the late Niklaus Wirth.
This is designed to be a language to teach compiler development with 」
New #blog post. Let's write a peephole optimizer for #QBE that operates on #AArch64 assembly code. Three years ago, we did this for #AMD64 assembly code. But now that I have Arm machines, we can replicate the effort for another CPU architecture.
https://briancallahan.net/blog/20250901.html
#compiler #compilers #opensource #freesoftware #unix #bsd #freebsd #openbsd #netbsd #dragonflybsd #linux #illumos #macos #assembler #assembly
New #blog post. Let's write a peephole optimizer for #QBE that operates on #AArch64 assembly code. Three years ago, we did this for #AMD64 assembly code. But now that I have Arm machines, we can replicate the effort for another CPU architecture.
https://briancallahan.net/blog/20250901.html
#compiler #compilers #opensource #freesoftware #unix #bsd #freebsd #openbsd #netbsd #dragonflybsd #linux #illumos #macos #assembler #assembly
Two #blog posts in less than one week!
It was considered known that there is no support within GNAT (Ada) for illumos. We cross-build a complete native binutils+gcc toolchain for illumos to test out this claim.
...only to discover that illumos has full support within GNAT. Not a single test fails.
https://briancallahan.net/blog/20250817.html
#Ada #illumos#GNAT#GCC#GNU #freesoftware #unix #bsd #freebsd #openbsd #netbsd #dragonflybsd #linux #compiler #compilers
Two #blog posts in less than one week!
It was considered known that there is no support within GNAT (Ada) for illumos. We cross-build a complete native binutils+gcc toolchain for illumos to test out this claim.
...only to discover that illumos has full support within GNAT. Not a single test fails.
https://briancallahan.net/blog/20250817.html
#Ada #illumos#GNAT#GCC#GNU #freesoftware #unix #bsd #freebsd #openbsd #netbsd #dragonflybsd #linux #compiler #compilers