This is interesting. Thank you. I am especially interested in how concurrency is implemented and its syntax.
One problem I am trying to think how to solve is cheap zero cost only synchronization between separate interpreters. I think Java and C# have thread safe object pool Allocators but when subinterpreters communicate I don't want to marshall the object to another interpreter which is what Python does. The identity of an object in Python is created at runtime which means class hierarchies are different objects. How do you copy objects between threads? Only have one object pool?
I am working on a toy multithreaded high level language that looks similar to JavaScript It has a very basic interpreter for my own imaginary assembly and the codegen from the AST. It could be turned into a bytecode interpreter but at first I'm just using strings.
I'm currently working on parsing nested HashMaps literals similar to JSON. I want everything to be an expression including functions, loops and hash literals.
One problem I want to solve is cheap communication between threads and coroutines. I have an pseudo actor framework that can send 20-100 million messages a second between threads used "send", "receive" instructions. There is also a "sendcode" and "receivecode" instruction which is used to send the thread to execute code at a label. It's a bit similar to sending a jump instruction to another thread.
I was thinking how to implement async/await. I wrote an unrolled switch statement similar to Protothreads. I need to write a transpiler that turns the async/await into an eager or lazy run on a thread.
One problem I am trying to think how to solve is cheap zero cost only synchronization between separate interpreters. I think Java and C# have thread safe object pool Allocators but when subinterpreters communicate I don't want to marshall the object to another interpreter which is what Python does. The identity of an object in Python is created at runtime which means class hierarchies are different objects. How do you copy objects between threads? Only have one object pool?
I am working on a toy multithreaded high level language that looks similar to JavaScript It has a very basic interpreter for my own imaginary assembly and the codegen from the AST. It could be turned into a bytecode interpreter but at first I'm just using strings.
I'm currently working on parsing nested HashMaps literals similar to JSON. I want everything to be an expression including functions, loops and hash literals.
One problem I want to solve is cheap communication between threads and coroutines. I have an pseudo actor framework that can send 20-100 million messages a second between threads used "send", "receive" instructions. There is also a "sendcode" and "receivecode" instruction which is used to send the thread to execute code at a label. It's a bit similar to sending a jump instruction to another thread.
I was thinking how to implement async/await. I wrote an unrolled switch statement similar to Protothreads. I need to write a transpiler that turns the async/await into an eager or lazy run on a thread.
https://GitHub.com/samsquire/multiversion-concurrency-contro...