Skip to content

State of SenseVM

Abhiroop Sarkar edited this page Aug 2, 2021 · 10 revisions

ARCHIVED

The following information is old now and a lot has happened in this repo since this was written.

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