No native mutex is needed if you have a pair of pipes between every
two VMs that need to communicate. Then, one VM thread writes to the
pipe, another VM thread reads from it. Since a VM thread is so
heavy-weight (it has its own data heap) opening a handful of pipes is
nothing.
What you do need
There's a bit of redundancy in locals. You can bind a variable
using :, [let, or [let*, and the two latter forms just get
transformed into the former behind the scenes. The [let forms also
seem unnecessarily bulky compared to : . What would you all say to
phasing out the [let forms and
: et [let are different because : can't be used everywhere.
From the docs:
Notes
This word ( : ) can only be used inside a lambda word, lambda
quotation or let binding form.
: toto ( a b -- c ) [let | b' [ 6 * ] | b' + ] ; ! works
: toto ( a b -- c ) 6 * : b' b' + ; ! does not work
I like the