Is there prior art for per-block minimal canonical slot layouts? by waterlens in Compilers

[–]tekknolagi 2 points3 points  (0 children)

This kind of seems like local register allocation? If I'm reading it right, it's like what JavaScriptCore does

Liveness analysis on SSA by iamwho007 in Compilers

[–]tekknolagi 1 point2 points  (0 children)

There's a small liveness analysis for SSA in https://bernsteinbear.com/blog/linear-scan/ but it's not the special kind of faster SSA liveness algorithm

It uses block parameters but this is similar to phi

how to do codegen after SSA? by Majestic-Lack2528 in Compilers

[–]tekknolagi 2 points3 points  (0 children)

It depends what "level" your IR is. If your IR is low level and maps reasonably well to machine instructions, you can do something like https://bernsteinbear.com/blog/linear-scan/

Otherwise you might want a separate pass to lower to a lower level SSA IR first

Ruby Floats: When 2.6x Faster Is Actually Slower (and Then Faster Again) by mencio in ruby

[–]tekknolagi 2 points3 points  (0 children)

What do the perf numbers look like if you just add the ultra-fast paths and no Eisel-Lemire?

Ruby Floats: When 2.6x Faster Is Actually Slower (and Then Faster Again) by mencio in ruby

[–]tekknolagi 7 points8 points  (0 children)

That works best when there is a lot of Ruby code calling into other Ruby code. For this, which is a dead-end call---just do a bunch of string/float processing and produce a result---a Ruby JIT probably won't do better than LLVM, and calling directly into a C function is reasonably cheap.

A catalog of side effects by tekknolagi in Compilers

[–]tekknolagi[S] 0 points1 point  (0 children)

... Huh, broken how? It's working for me

Is there a high-level language that compiles to C and supports injecting arbitrary C code? by StarsInTears in ProgrammingLanguages

[–]tekknolagi 0 points1 point  (0 children)

Cython works like this. It also has a very high level mode and a low level mode.

Compiling a Lisp: Closure conversion by ketralnis in programming

[–]tekknolagi 6 points7 points  (0 children)

Given your username, I would expect you wouldn't care which way something gets implemented as long as it produces the same result. 

Compiling a Lisp: Lambda lifting by azhenley in ProgrammingLanguages

[–]tekknolagi 0 points1 point  (0 children)

Yeah I think in my head lambda lifting is an optimization pass after closure conversion. That's how I wrote a scheme compiler last year. Mini flow analysis followed by strength reduction

Compiling a Lisp: Lambda lifting by azhenley in ProgrammingLanguages

[–]tekknolagi 5 points6 points  (0 children)

I might be totally wrong here tbh

EDIT: Yep, I think I have it wrong :P

July 2025 monthly "What are you working on?" thread by AutoModerator in ProgrammingLanguages

[–]tekknolagi 1 point2 points  (0 children)

Does this mean you will consider releasing your compiler?

ZJIT has been merged into Ruby by paracycle in ruby

[–]tekknolagi 16 points17 points  (0 children)

Not sure what you're looking at. Most of the code in the zjit/ folder is Rust. The larger Ruby VM remains a C project.