Update %types.r with e.g. ANY-STRING? vs ANY-STRING! · metaeducation/ren-c@7523828 · GitHub
This was a simple incorrect assert in the error delivery.
If you hit asserts (or bugs) then please feel free to report them on GitHub Issues. I don't really use it much right now, as I just keep a little local task list...and most things that don't fit there are open-ended design discussions, where the forum's reorganizability makes it a better medium.
But I do write up an occasional thing if it's something I'm not imminently going to fix and don't feel like it belongs as a long comment inline in the source, or as a forum post. Did this one recently, for example:
Quasi-Void Rendering Ambiguity in Paths · Issue #1157 · metaeducation/ren-c · GitHub
If you're reading source, hopefully you've gathered that there are a lot of "extenuating factors" which mean that what you're reading may not be good or current... so take everything with a grain of salt.
-
A lot of the code in the building process is more convoluted than it need be because it's trying to run in a 6-year-old Ren-C as well as a current one.
- As bad as the convolutions are, it's still a bit impressive to see how much emulation and twisting can be done. The design has been influenced by what was hard or easy to bend, so recent interpreters are even more bendy.
-
Rebmake is a catastrophe beyond that, I've explained why.
- Again...as much of a nightmare it is, maintaining that nightmare provides insights. It's like a large organic test case that demands attention to itself...I can't skip over its needs, because things need to build.
-
Large swaths of the system are legacy C if/then/else soup that I wouldn't trust further than I can throw it. But this is the life support for the moment, that makes the interpreter able to actually do some things... so it's possible to test the ramifications of designs on sort-of-real-world situations.
-
Entire fundamental pieces (like binding and types, as recent examples), have undergone experimental prototyping while trying to juggle all the balls in the air... the carnage is pretty intense.
-
The concerns of isotopes are still very much propagating (in fact, the concerns of generic quoting never quite got a good formalism). The very existence of "values that decay" raise the question of which routines have to face about who should see decayed or undecayed values. This is the consequence of innovating in the midst of existing code.
- Fortunately Ren-C can be built as C++ for extra checks, and I started introducing some amount of type safety with Element/Value/Atom distinctions. You'll see a pattern of me trying to make things that compile as brutish C but get a leg up if a C++ compiler is used.
But as I've said before, as despairing as some of it may seem, the defensive programming of asserts and such put Ren-C in a much stronger position than something like R3-Alpha or Red. If they have a bug they just kind of have to go "oh well, it does that sometimes." Ren-C is so noisy when something is out of alignment that it usually pinpoints the moment something goes wrong.
And I do think it actually does quite a lot of impressive things, considering the "rules of the game" the implementation is playing.