-
Notifications
You must be signed in to change notification settings - Fork 1
State of SenseVM
Abhiroop Sarkar edited this page Aug 2, 2021
·
10 revisions
Currently implemented
- An extended Lambda Calculus IR
- IR to bytecode assembler for the Categorical Abstract Machine (CAM)
- Bytecode interpreter for CAM in C
- Garbage collector (using Schorre Waite marking algorithm and Hughes Lazy sweep)
- All calculations currently in a single parent context
TODO
- Run small programs with the current VM on STM32 etc (Dependent on point 4)
- Intra VM container concurrency (possibly single-threaded)
- Actors vs Channels vs ... How to choose? (Dependent on point 5)
- Highly likely that we have to support continuations in the VM to support this
- Inter VM container concurrency (using a general HAL abstraction)
- Coarse-grained IFC here
- Concurrency model will perhaps influence I/O as well as security
- Extend bytecode with I/O instructions (Sources of inspiration?)
- Runtime IFC by a reference monitor to regulate I/O drivers usage; done at the level of each container
- Source language
- Caml vs SML vs Hailstorm DSL...
- An established language readily brings infrastructure
- A new language allows exploring new syntax, with concurrency etc
- Security infrastructure
- Coarse-grained IFC; closely related to concurrency implementations
- Make the heap and the stackless memory hungry
- Research-y as well as Engineering efforts involved (See the last point of research aspects)
Research Aspects
- Verification
- Generate VM from specs + QuickCheck
- Can we add some lightweight techniques?
- Security
- Can we look at security policies and confirm if they leak or not?
- Are there coarser static IFC techniques?
- Safety
- Statically estimate memory usage for a language subset
- Modify GC strategy to something more static like regions
- Complicated by and dependent upon concurrency model
- Compilation and Runtime
- Smarter strategies for reduced memory allocation, usage
- Efficient implementations of concurrency and distribution