1. 21
  1.  

  2. 4

    As far as I can tell, underneath the actor model Pony is feeding multiple native threads using a work stealing algorithm? Basically: does Pony have parallelism, and not just green threads?

    And what is the story with frame pointers? I’d like to know if DTrace can be used on it.

    1. 5

      There was actually a pretty interesting article posted the other about dtrace and Pony.

      https://lobste.rs/s/d5ndrg/dynamic_tracing_pony_python_program_with

      1. 3

        Yes, multiple native threads with a work stealing algorithm. Pony has parallelism.

        1. 3

          To build on doublec’s comment… there are no green threads in the Pony runtime.

          1. 1

            A few more questions, if you don’t mind. I wasn’t able to find answers to these with preliminary Googling:

            Are floats boxed in Pony? Does Pony support multidimensional arrays? Is the GC a copying collector, or do objects stay where they were allocated? How difficult would it be to create objects over existing data in memory (i.e. a mmapped file)? And does Pony use %rbp as a base pointer, or rely entirely on DWARF to figure out a stack frame?

            1. 2
              • Are floats boxed in Pony?

              It depends. A float could end up boxed but F32 and F64 are not boxed by default. https://www.ponylang.org/reference/pony-performance-cheatsheet/#boxing-machine-words

              • Does Pony support multidimensional arrays?

              You could design a class to do it, but there’s not builtin type for them. There’s a RFC process to can be used to add new features. https://github.com/ponylang/rfcs/

              • How difficult would it be to create objects over existing data in memory (i.e. a mmapped file)?

              It depends.

              You’d might need to have access to be able to operate on pointers to do it. This is currently limited to some builtin classes like String and Array. We are planning on adding a capability that would allow non-builtin classes to use Pointers within Pony (as compared to C-FFI).

              OTOH, you might be able to do it now. Really it depends on what you would need to do. If you could represent the memory mapped file as an Array, (which you probably can), then you should be able to leverage existing functionality to do what you want.

              • And does Pony use %rbp as a base pointer, or rely entirely on DWARF to figure out a stack frame?

              That I can’t answer. I’ve never gone looking. Pony uses LLVM. I’ve never had a need to check out what is happening yet.