Version 0.7.3
A solid batches of fixes and improvements.
- Far more robust detection of naming collisions between various symbol types. You might notice some new errors in your ink that weren't being detected before!
- Much improved behaviour for default choices (
* ->), and disallowed usage of->outside of this. - More divert types supported on choices, so you can do for example
* out of the tunnel we go! ->->. - The divert taken after a tunnel return can now take parameters, useful for this pattern
->-> where_next(-> egypt). - The
&&/andand||/oroperators on lists now check whether they contain anything, then do a logical and/or on the results. Previouslyandused to do the union operation on lists (e.g.cloak and dagger). Instead, you need to docloak + dagger. - Fix for using
x++andx += ywithin functions, and general increased compiler robustness for them. EXTERNALs can now be defined anywhere. Previously there were errors with using them below knots.- New
READ_COUNT()internal function that can be used on variable divert targets, which wasn't possible before. - Can now store a variable divert target that points to a knot that takes parameters, and therefore get the
READ_COUNT/TURNS_SINCEof it. Warning, there's no checking for the number of parameters that a parameterised knot takes when calling it from a variable divert target. If you get it wrong, weird stuff will happen! - Ability to query the current stack depth from runtime state (if you use source rather than the DLL, since it's currently
internal), useful for debugging tunnels.