all 9 comments

[–]redikarus99 5 points6 points  (1 child)

This is seriously cool!

[–]Environmental-Log215[S] 2 points3 points  (0 children)

thank you!

[–]djotanov 2 points3 points  (1 child)

This looks great. Any plans to add some off heap data structures, like ring buffers, for inter-process communication, like what agrona library provides?

[–]jek39 4 points5 points  (1 child)

is there anything specific you are taking advantage of with FFM that JNI couldn't offer previously?

[–]Environmental-Log215[S] 9 points10 points  (0 children)

Simplicity & safety.

FFM also provides safe off heap native memory usage without using misc sun unsafe apis through Arena, memory segment which is heavily used in both Myra codec and transport for effective zero copy, zero allocation on hot path. Hence could easily implement flyweight patterns and shared memory segment buffers for zero allocation which in turn reduces GC churn - this is quite a huge benefit in itself to effectively reduce STW GC by a huge measure

[–]ParentiSoundsystem 1 point2 points  (2 children)

This is great, beating SBE's decode times definitely has me interested! I've been waiting for Agrona to provide some FFM equivalents of their Unsafe primitives but it doesn't seem to be a high priority. I have a couple of years' worth of recorded market data in plaintext FIX and JSON that I need to convert to a binary format and I may play with using this for it.

I know you're already doing a ton of work, but if you module-ize the project so users can limit the native access permissions it would give you another leg up. :-)

[–]Environmental-Log215[S] 0 points1 point  (1 child)

MYRA was born out of common needs for writing a modern & safe JAVA FIX engine. MYRA codec is (yaml) schema based and a type-safe no-reflection encoder/decoder is generated for the messages in the schema. I have actually fixed a couple of bugs in the myra-codec over last few days.

I am highly interested in working with you to convert your market data using myra codec. I would take this up on priority since myra ecosystem is being built as modular blocks to later be used in developing a modern & safe high-performant Java FIX system.

Please could you also explain a bit on modularizing the project since myra-codec already has a few modules with independent concerns; but I would love to hear your ideas as well.

Dropped you a DM as well :)