184 karma · joined September 30, 2020
Overall, I do agree that the hardware feels quite nice, and besides those issues I listed, the Linux experience is quite good. I was very happy to not be forced to use Windows.
If we eliminate all games with less than 1000 sales or something, I think it would be a very low confidence estimate.
Once I get pure C output supported, it should be suitable even for embedded C environments.
That GC in particular has to stop the world, traverse the entire fresh heap, guesses whether something is even a pointer (and can guess wrong, causing a memory leak!), and does all this at arbitrary times, unless you do non-idiomatic things like manage your own memory in preallocated arrays, or use C/asm-powered memory mapped buffers [0].
Nothing comes for free, and some domains can't pay the price for GC (and choose to spend those resources elsewhere). Games, in my opinion, are largely still in that category.
Cakelisp differs from Zig in that arbitrary code modification is supported, which is a step closer to the modifiable environment of Lisps. Very few languages besides lisp allow you to do things like "iterate over every function defined and change their bodies, and create a new function which calls them". Zig does not support that. It's extremely useful for some tasks (e.g. hot-reloading code modification, mentioned in the article)
Jai isn't out yet, but I was inspired by many of the comptime ideas.
I used something similar to your technique for compile-time variable destruction. The compiler doesn't know the type, so a macro generates a callback which deletes a casted version. These callbacks are named with the type so they can be lazily added and reused.
When I say seamless, I'm going for as close as possible, I.e. it should feel even easier to use C from Cakelisp than from C itself. The build system especially makes this possible.
I think Lisps tend to optimize for throughput, but games have very strict latency requirements. Garbage collection pauses could cause frame pacing issues (not that C solves that completely, but it is at least not a built in disadvantage of idiomatic use of the language)
After years of dealing with points of frustration in C++ land, I've created my own programming language. It emphasizes compile-time code generation, seamless C/C++ interoperability, and easier 3rd-party dependency integration. It's like "C in S-expressions", but offers much more than just that.
I had a hard time trimming this article down because of how excited I am about the language. Feel free to skim and read more in the sections that pique your interest.
I don't expect everyone to love it and adopt it. I do hope that some of the ideas are interesting to fellow programmers. I found it eye-opening to realize how much better my development environment could become once I opened this door.
[0] https://www.reddit.com/r/gamedev/comments/kh1p0a/cakelisp_a_...
Really, VS is exceptional even in Windows land. I've tried RemedyDB, an attempted rewrite of debugging on windows, and found it useless. It had similar bugs to this article - no symbols, failure to attach, failed to bind breakpoints at all, failed to display variables.
I think it would be a huge project to replace GDB with a graphical-oriented debugger, but it would be worthwhile. If I were in charge, I'd make it a C lib that didn't come with a frontend. That way, the user can stay in their familiar editor and link the lib. (most programs should be able to use C libraries).
Edit: The Wikipedia article [0] does have a good summary, which I think makes us both right: There are really a collection of theses, none of which in my opinion dominate the show, except possibly the unplanned nature of technological evolution.
Very few people have the time and money to fund tech and engineering purely to influence elections. Most money coming in to tech is going to be from customers and investors, the latter being in interest of making money off of the business getting more customers.
Companies like Cambridge Analytica are a very very minute minority compared to the swaths of B2B, consumer tech, etc.
Your position regarding thinking everyone who isn't political at work is naive or evil is not helping the problem. This is only alienating people who already find such aggressive and exaggerated statements wrong.