Locks are bad “Beautiful Concurrency”, Simon Peyton Jones (2007) Taking too few locks Taking too many locks Taking the wrong locks Taking locks in the wrong order Error recovery Lost wake-ups and erroneous retries
GobiesVM in a nutshell Written in Go, utilizing native data structures and GC A Ruby subset derived from tinyrb Therefore uses a LEG parser instead of bison Stack-based VM which resembles YARV Minimal modification to existing code
Transactional Locking II Global Timestamp Transaction Transaction Local Timestamp Local Timestamp Read Set Read Set Write Set Write Set Transaction Local Timestamp Read Set Write Set
Validation Read Set Write Set Global Timestamp Check rev of object rev > local_timestamp: object has been modified Acquire locks of objects to be modified Abort on failure Increments by one
Better parser Go provides goyacc for parsing But we have to do lexical scanning ourselves. https://sourcegraph.com/blog/multi-language-lexer- and-scanner-for-go