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
&&
/and
and||
/or
operators on lists now check whether they contain anything, then do a logical and/or on the results. Previouslyand
used to do the union operation on lists (e.g.cloak and dagger
). Instead, you need to docloak + dagger
. - Fix for using
x++
andx += y
within functions, and general increased compiler robustness for them. EXTERNAL
s 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_SINCE
of 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.