> You don't have to implicitly supply the "this" parameter to each "object" predicate if you don't want to [...] if you were really interested in that level of syntactic sugar. Given that the original "feature request"…
Could you elaborate on all of these? For [1], you would either need to pass the AVL tree around or to have it as a global (which is not wanted), and instead pass the key (the "this" context which is different for…
If this is one of the main things you want to demonstrate, wouldn't it be better to focus on this one goal first, instead of the whole pipeline from a C preprocessor to directly linked executables? Essentially, if you…
Also, for a different notion of "cruft", informally it seems to me like new SSA-based compilers tend to choose an SSA representation with basic block arguments instead of the traditional phi instructions. There are…
> a decent linear scan allocator which will eventually be replaced with graph coloring for optimized builds. Before setting out to implement 1980s-style graph coloring, I would suggest considering SSA-based register…
What they're "alluding to" is a standard combinator that has existed under the name "paramorphism" for a long time. Here is Jeremy Gibbons's "Origami programming"…
> let's drop the charade that everything is above board here. OK. Since you're opposed to merely alluding to things (your italics, which I find funny), could you please state explicitly the misconduct you are alleging?
The nodes are adjacent in sum1. The nodes are adjacent in sum2, and sum2 executes more instructions than sum1, and sum2 is faster than sum1. The nodes are adjacent in sum3, and sum3 executes more instructions than sum1,…
The LLVM project has a tool called llvm-mca that does this. Example: https://gcc.godbolt.org/z/7zcova1ce The version in the Compiler Explorer wouldn't work on AArch64 without an -mcpu flag and I didn't know what to…
I see, that's indeed an important distinction. Thanks!
This is similar to my symptoms. So far I haven't found any over the counter painkiller that helps me reliably. At least not in the doses you're supposed to take. A few years ago I read something about a theory that…
What is "the above"? The context was (https://news.ycombinator.com/item?id=40844208): > The one-sided pattern matching seems to be a peculiarity of Elixir. And Erlang. And Haskell. And OCaml. And F#. And... All of these…
You're right that you can't override __add__ for numbers, but the bytecode doesn't say this. The bytecode isn't specialized to numbers. It will call the __add__ operation on whatever object you give it. The interpreter…
> Because Picat is a research language it's a little weird with putting expressions inside structures. If we did $state(1 + 1) it would store it as literally $state(1 + 1), not state(2). > Also you have to use dollar…
What's not the same as what? Based on your examples it looks like you're saying that unification is not the same as pattern matching. But nobody said it was.
> I'd say that "pattern matching" is unification, where there are no free variables on the right side and the left side is the "pattern" to match. Plus the restriction that the left hand side must be linear, that is,…
> Now, unification is Turing-complete pattern matching No. First-order syntactic unification is not Turing complete. The combination of unification and resolution is Turing complete. > For instance, in Prolog, you can…
I don't see why it would be. The native image static analysis decides on the level of individual classes, methods, and even class fields what to include in the image and what not. It doesn't compile entire packages or…
WebAssembly fans might say that it's the kind of universal low-level but portable IR that you envision. It would certainly make sense for a Scheme compiler to consider a WebAssembly target.
I was in Paris in March and had a ticket for this. I was at the museum an hour before my booked time slot. The square in front of the entrance was one gigantic queue, and when I asked at the front I was told that they…
Unfortunately this doesn't answer the OP's question. OK, it may not result in better code. But in which cases, and for what reason? EDIT: And for that matter, does "not better" mean "neutral" or "actually worse"? To be…
C has had fixed-size integers since C99: https://en.m.wikibooks.org/wiki/C_Programming/inttypes.h Targeting LLVM IR has the drawback that it is not platform independent: Details of calling conventions must be modeled in…
You can build GraalVM native images from modularized code, but you can also build them from non-modularized code.
Yes, the kind of test case reduction that C-Reduce does is analogous to QuickCheck's shrinking. Some of C-Reduce's transformations are purely "on strings", e.g., "delete a physical line from the file", others are a bit…
That Coq proof is not "without computer assistance". No Coq proof is, as Coq is literally an "assistant" that runs on a computer. And those many jobXtoY.v and taskXtoY.v files sure look like they also do the same as the…
> You don't have to implicitly supply the "this" parameter to each "object" predicate if you don't want to [...] if you were really interested in that level of syntactic sugar. Given that the original "feature request"…
Could you elaborate on all of these? For [1], you would either need to pass the AVL tree around or to have it as a global (which is not wanted), and instead pass the key (the "this" context which is different for…
If this is one of the main things you want to demonstrate, wouldn't it be better to focus on this one goal first, instead of the whole pipeline from a C preprocessor to directly linked executables? Essentially, if you…
Also, for a different notion of "cruft", informally it seems to me like new SSA-based compilers tend to choose an SSA representation with basic block arguments instead of the traditional phi instructions. There are…
> a decent linear scan allocator which will eventually be replaced with graph coloring for optimized builds. Before setting out to implement 1980s-style graph coloring, I would suggest considering SSA-based register…
What they're "alluding to" is a standard combinator that has existed under the name "paramorphism" for a long time. Here is Jeremy Gibbons's "Origami programming"…
> let's drop the charade that everything is above board here. OK. Since you're opposed to merely alluding to things (your italics, which I find funny), could you please state explicitly the misconduct you are alleging?
The nodes are adjacent in sum1. The nodes are adjacent in sum2, and sum2 executes more instructions than sum1, and sum2 is faster than sum1. The nodes are adjacent in sum3, and sum3 executes more instructions than sum1,…
The LLVM project has a tool called llvm-mca that does this. Example: https://gcc.godbolt.org/z/7zcova1ce The version in the Compiler Explorer wouldn't work on AArch64 without an -mcpu flag and I didn't know what to…
I see, that's indeed an important distinction. Thanks!
This is similar to my symptoms. So far I haven't found any over the counter painkiller that helps me reliably. At least not in the doses you're supposed to take. A few years ago I read something about a theory that…
What is "the above"? The context was (https://news.ycombinator.com/item?id=40844208): > The one-sided pattern matching seems to be a peculiarity of Elixir. And Erlang. And Haskell. And OCaml. And F#. And... All of these…
You're right that you can't override __add__ for numbers, but the bytecode doesn't say this. The bytecode isn't specialized to numbers. It will call the __add__ operation on whatever object you give it. The interpreter…
> Because Picat is a research language it's a little weird with putting expressions inside structures. If we did $state(1 + 1) it would store it as literally $state(1 + 1), not state(2). > Also you have to use dollar…
What's not the same as what? Based on your examples it looks like you're saying that unification is not the same as pattern matching. But nobody said it was.
> I'd say that "pattern matching" is unification, where there are no free variables on the right side and the left side is the "pattern" to match. Plus the restriction that the left hand side must be linear, that is,…
> Now, unification is Turing-complete pattern matching No. First-order syntactic unification is not Turing complete. The combination of unification and resolution is Turing complete. > For instance, in Prolog, you can…
I don't see why it would be. The native image static analysis decides on the level of individual classes, methods, and even class fields what to include in the image and what not. It doesn't compile entire packages or…
WebAssembly fans might say that it's the kind of universal low-level but portable IR that you envision. It would certainly make sense for a Scheme compiler to consider a WebAssembly target.
I was in Paris in March and had a ticket for this. I was at the museum an hour before my booked time slot. The square in front of the entrance was one gigantic queue, and when I asked at the front I was told that they…
Unfortunately this doesn't answer the OP's question. OK, it may not result in better code. But in which cases, and for what reason? EDIT: And for that matter, does "not better" mean "neutral" or "actually worse"? To be…
C has had fixed-size integers since C99: https://en.m.wikibooks.org/wiki/C_Programming/inttypes.h Targeting LLVM IR has the drawback that it is not platform independent: Details of calling conventions must be modeled in…
You can build GraalVM native images from modularized code, but you can also build them from non-modularized code.
Yes, the kind of test case reduction that C-Reduce does is analogous to QuickCheck's shrinking. Some of C-Reduce's transformations are purely "on strings", e.g., "delete a physical line from the file", others are a bit…
That Coq proof is not "without computer assistance". No Coq proof is, as Coq is literally an "assistant" that runs on a computer. And those many jobXtoY.v and taskXtoY.v files sure look like they also do the same as the…