rune::core

Module object

Source
Expand description

The core object defintions.

Objects are implemented as rust enum with at max a 56 bit payload. This means that it will always be 64 bits. 32 bit systems are not supported. Because of this it gives us more flexibility in the amount of information we can encode in the object header. For example, we can have 255 variants of objects before we need to box the object header. We are making the assumption that pointers are no bigger then 56 bits and that they are word aligned. All objects should be bound to a lifetime to ensure sound operation of the vm.

Modulesยง

  • buffer ๐Ÿ”’
  • cell ๐Ÿ”’
  • convert ๐Ÿ”’
    This module holds implementation of conversion functions. Much of this code could be replaced with macros or specialized generics if those are ever stabalized.
  • float ๐Ÿ”’
  • func ๐Ÿ”’
  • hashtable ๐Ÿ”’
    The design of the hashtable is based on the requirments we have. First is we need it to support being both thread local and global. Second we need iterate and mutate at the same time. Third we need to be able to clean up the heap allocation when it is garbage collected.
  • string ๐Ÿ”’
  • symbol ๐Ÿ”’
  • tagged ๐Ÿ”’
  • vector ๐Ÿ”’

Functionsยง