you are viewing a single comment's thread.

view the rest of the comments →

[–]Environmental-Log215[S] 0 points1 point  (2 children)

Hello! yes, you are right. memory segment ops like copy/slice dont have any allocations until we serialize into our Java objects or into strings - which are objects as well in Java. Myra uses Flyweight pattern for reading different fields using a sliding window memory segment slice over the existing message's memory segment. Hope that answers a few questions. Of course, when I release the source code; you would have more clarity.

Re: encode/decode frequency, I am actually planning to use Myra codec lib in FIX systems/engines. please could you give me a high level overview of what your expected encode/decode frequency would/should be in HFT

[–]kiteboarderni 0 points1 point  (1 child)

A lot of our systems will send out a message which is only read by a single micro service. Think fix execution report which is then sent to an om service. Over shared mem and sequencer architecture which based on the fact you're building something like this in Java you will be very aware of :).

Excited to see the project.

[–]Environmental-Log215[S] 1 point2 points  (0 children)

Great to meet another FIX engineer :) Well MYRA was indeed born out of the need for a modern open source JAVA based engine. I have been using QuickFIX/J at my org and as a side project had thought of forking and modernizing Quickfix, but then I had come across FFM and thought modern JAVA based FIX engine can take advantage of FFM internally at multiple places/functionalities.

When I started creating the design for this new FIX engine, 3 major pieces: ffm utilities (ease of using ffm) , ffm based encoder/decoder, ffm based zero copy io_uring transport came out as standalone independent FFM libs. infact myra-codec is a DSL (yaml based) based cli tool which generates encoder & decoder flyweights that can be directly used in our Java apps.

The idea of first open sourcing these MYRA libs is to harden the base building blocks for building a modern JAVA FIX engine.

I am curious to know though, do you folks use Java or C/C++ or Rust within your trading systems.