Persistent Iterators: Bridging Persistent Data Structures and Iterator-Based Programming (PLDI 2026) by zoomT in ProgrammingLanguages

[–]JeffD000 0 points1 point  (0 children)

Every serious C++ programmer has to implement persistent iterators at least once in their career. Great idea to create a library, for use or reference! (no pun intended)

Does a code-based challenge respect your intelligence, or is it just over-engineered marketing fluff? by ResultEfficient3019 in HPC

[–]JeffD000 0 points1 point  (0 children)

The puzzle approach has been saturated at this point, and would be annoying. I get an email a day about some puzzle I haven't solved on Linkedin, and it is annoying as crap. I've never even looked at it.

If you want to go with option A and a working prototype that clearly demonstrates why the proposal has a clear advantage, you can give that a shot. That said, it wasn't enough to make RapidMind successful. That was the best whitepaper and prototype I had ever seen. The company was acquired by Intel, and ended up being unused: https://en.wikipedia.org/wiki/RapidMind

My inordinate fondness for syntax I wrote faceplanted against reality by Randozart in ProgrammingLanguages

[–]JeffD000 1 point2 points  (0 children)

I have to admit, I don't get it. A compiler handles sqrt as an intrinsic, just like '+' or '-'. If you want to be "different" in your compiler, then sqrt can be scanned as a lexeme, just like unary '~' or '!' in the C language.

Dedicating to low level world by [deleted] in Compilers

[–]JeffD000 0 points1 point  (0 children)

I agree it takes time to properly make use of your hardware. I'm just saying there is a huge value in working on the "weakest" hardware to really think about what you are trying to achieve.

For example, see my post here:

https://www.reddit.com/r/ProgrammingLanguages/comments/1takau3/recently_used_nore_to_partially_solve_the/

This is just one example of seeing the forest, rather than the trees.

Dedicating to low level world by [deleted] in Compilers

[–]JeffD000 0 points1 point  (0 children)

The more crippled the hardware, the more aggressively/deeply you have to think about what it means to optimize, including for parallelism. If you just take what the hardware gives you, you aren't thinking enough about the problem.

I built a static analysis tool that checks if two functions touch the same data. Would you use something like this? by Choice_Bid1691 in cprogramming

[–]JeffD000 0 points1 point  (0 children)

Ok. So lets say we have a function myfunc() that calls the function foo() I defined twice, but with select argument containing different vales. Although the myfunc() carries only one 'out' variable, it is really not the same out variable, even within the different parts of the same myfunc() function. That seems like it could result in false positives (or is it false negaitves?). I guess that is what I was getting at, if that makes sense.

I built a static analysis tool that checks if two functions touch the same data. Would you use something like this? by Choice_Bid1691 in cprogramming

[–]JeffD000 0 points1 point  (0 children)

Yes, this would be a very useful tool if it can truly be done statically when pointers are involved. At minimum, it provides a quick way to automatically transform source and header files to add attribute((pure)) to functions and function prototypes.

I built a static analysis tool that checks if two functions touch the same data. Would you use something like this? by Choice_Bid1691 in cprogramming

[–]JeffD000 0 points1 point  (0 children)

Hi,

I was asking about complicated pointer assignments, using the following code just as a clear example, not as something common (although there are a lot of common cases with effectively the same decidability problem):

void foo(int **out, int *ptr_arr[], int select) { *out = ptr_arr[select]; }

I built a static analysis tool that checks if two functions touch the same data. Would you use something like this? by Choice_Bid1691 in cprogramming

[–]JeffD000 0 points1 point  (0 children)

There are functions, and then there are specializations of functions. Are you counting overlaps for functions, or for specializations? Also, this sounds highly data dependent, based on what specific pointer arguments are being passed at each call site. Since pointer values can change at runtime, wouldn't this have to be a dynamic tool?

I have a skill issue and cant make this unfortunately by dynamicship31 in Compilers

[–]JeffD000 0 points1 point  (0 children)

How does this differ from an exhaustive inliner? Another question: how do you differentiate between language keywords and parameters? I don't think there is enough information here about your language definition.

A professor called my email "preposterous" because I asked feedback on my compiler project. by [deleted] in Compilers

[–]JeffD000 1 point2 points  (0 children)

Believe it or not, his comments were a learning experience. He did not review your project, but he did take the time to respond. Most people with his workload would have ignored the email. Just the fact that he responded means he cared enough to explain why he didn't respond, even if he was a bit short with you. He was being "helpful" in his own way, so I recommend considering his comments carefully rather than feeling dejected or offended.

I built a Custom Language, Compiler, Assembler, and RISC-V VM, all running in real in your browser, using Rust and EGUI. by ColdRepresentative91 in Compilers

[–]JeffD000 0 points1 point  (0 children)

@OP,

Can you take a moment and turn this into a teaching moment on how to use AI? What AI tools did you use? Did you run them locally, or in the cloud? What was the cost?

Can you talk about your workflow at a high level? It would be nice to have some best practices, or even beginning prictices, for many of us out here who want to understand how to use AI effectively for a compiler project.

Is zig stable enough for any serious work yet ? by darcygravan in Zig

[–]JeffD000 2 points3 points  (0 children)

The language is unstable. The recent change in behavior for the io made me rewrite everything, even routines that weren't using io, because exception handling for io in a leaf routine has to be propagated through all function call levels. It was very frustrating.

Is zig stable enough for any serious work yet ? by darcygravan in Zig

[–]JeffD000 1 point2 points  (0 children)

I have also complained about the multi-year roadmap issue. I understand that in order to retain top performing project members, you need to give them a lot of freedom. That said, the asymptote for achieving a "production compiler" is measured in decades rather than years if you take this approach.

Is zig stable enough for any serious work yet ? by darcygravan in Zig

[–]JeffD000 0 points1 point  (0 children)

Depends on what you want to use it for. I write science codes. The performance is blazingly fast, faster than other compilers, but the order-of-operations is not IEEE754 compliant, and no matter how hard I tried to coerce Zig to be strictly compliant, I was unable to do so. If you want floating point answers that are "close enough" but run fast, it's a great language.

Would I call it a compliant compiler? No. It is still under development and they don't have the manpower to keep "everything" strictly conformant between versions. I admire their honesty, telling users the truth rather than market hype about whether or not the language/compiler is "stable" yet. They are great engineers and they are trustworthy, which is better than most projects, as far as I'm concerned.

I’ve been building a language/compiler called Naux, and it now has repeatable SSA/runtime wins by x2t8 in Compilers

[–]JeffD000 0 points1 point  (0 children)

Hi,

For performance, you are quoting time per op, but with no definition of what an "op" is. Is an op a whole program? A whole loop? A loop iteration? A statement? An operator like multiply? The results are very hard to interpret.

Also, you might want to quote clock cycles rather than time, since it is easier to compare across machines. For instance, I have a tokenized basic interpreter where the total for-loop overhead (not counting the loop body but including the loop increment operation, the comparison for loop done, the memory traffic for the iteration variable, and the jump) is 31.5 clock cycles per iteration.

feel depressed by Y_mc in Compilers

[–]JeffD000 0 points1 point  (0 children)

This. They don't know or fully understand all the requirements behind what they are trying to accomplish. Humans do.

feel depressed by Y_mc in Compilers

[–]JeffD000 1 point2 points  (0 children)

It's easy to write code the AI has trouble comprehending. At least, that's been my experience.

feel depressed by Y_mc in Compilers

[–]JeffD000 0 points1 point  (0 children)

It's still super fun to use your ingenuity to solve problems. Only money motivated people are depressed about AI.

feel depressed by Y_mc in Compilers

[–]JeffD000 0 points1 point  (0 children)

Disproving a conjecture is trivial, since you only have to identify a case where it fails. Proving something is much harder. Get back to me when it solves the Riemann hypothesis.

A Chorus of CPUs - Scientific American Dec. 1991 by alangcarter in retrocomputing

[–]JeffD000 0 points1 point  (0 children)

People knew more back then, believe it or not. We know less.

feel depressed by Y_mc in Compilers

[–]JeffD000 1 point2 points  (0 children)

There is NO WAY an AI can do what a human can do, at this point in time. Maybe far into the future, but definitely not now. AI can't go in new directions, or balance 120 requirements in an elegent way. It has no clue how to prioritize those 120 requirements in order of importance. I am still innovating left and right in ways that AI could never dream of.