Just one correction, zig does not ignore integer overflow, it will panic in debug and release safe, and it has operators that will wrap or saturate instead of panicking
Thank you for the hint. Yes, the Zig build mode ReleaseSafe creates executables which panic on integer overflow. But the release modes ReleaseFast and ReleaseSmall both disable safety checks. And I fear that most performance aficionados will always use ReleaseFast. In this case an integer overflow can be dangerous as this is essentially undefined behavior. Wrapping is a different issue as it has only a few application areas where it is needed, such as message digests. In situations where a normal arithmetic operation is needed a wrapping operation just ignores integer overflow. BTW.: Wrapping is easy to implement, since the CPU instructions usually work this way.
Did you independently reinvent ARC? This is Apple's term for compiler-inserted reference counting calls found in Objective-C and Swift. They allows circular references by way of "weak" references, something you could adopt.
If you can create circular references and leak memory - it's not a memory safe language anymore. "Just use container LOL" is not an answer - you can use containers in c++, it doesn't make it memory safe. In general, i think, you can't avoid manual management and still get the perfomance and robustness. It's just a tradeoff you need to face, going half-measuress is not the answer.
I didn't know this project still existed.
The style is of a crazy scientist. I like it.
Just one correction, zig does not ignore integer overflow, it will panic in debug and release safe, and it has operators that will wrap or saturate instead of panicking
Thank you for the hint. Yes, the Zig build mode ReleaseSafe creates executables which panic on integer overflow. But the release modes ReleaseFast and ReleaseSmall both disable safety checks. And I fear that most performance aficionados will always use ReleaseFast. In this case an integer overflow can be dangerous as this is essentially undefined behavior. Wrapping is a different issue as it has only a few application areas where it is needed, such as message digests. In situations where a normal arithmetic operation is needed a wrapping operation just ignores integer overflow. BTW.: Wrapping is easy to implement, since the CPU instructions usually work this way.
interesting language. I use to curly braces that's only relative obstacle to understand seed7. and FAQ of this is also very informative.
Great overview of the language, Thomas. Thank you.
hello sir just tried to compile seed7 on s390x arch Linux and it works
Wow, this was awesome. This project definitely has a lot of hardwork put into it and a lot of unique ideas.
i had heard of seed7 before, however this talk has inspired me to take some time to really try it out. great talk!
Did you independently reinvent ARC? This is Apple's term for compiler-inserted reference counting calls found in Objective-C and Swift. They allows circular references by way of "weak" references, something you could adopt.
If you can create circular references and leak memory - it's not a memory safe language anymore. "Just use container LOL" is not an answer - you can use containers in c++, it doesn't make it memory safe.
In general, i think, you can't avoid manual management and still get the perfomance and robustness. It's just a tradeoff you need to face, going half-measuress is not the answer.
bro reinvents java in 2024 ???