Hi All,
I work for a financial institution and we are a group of about 10 programmers that develop and maintain a very high throughput low latency trading platform built in Java. We have been stung by the Java GC and multi threading bugs a few times and we are also in the business of continously trying to make our code run faster.
Apart from BAU work I have been searching around trying to find a speedier alternative to Java and came across Rust recently. So now I want to do a proof of concept Rust implementation of some core parts of our App to see if we gain anything by possibly switching. Its a personal project atm but who knows in future I might be able to convince my team to switch if the experiment goes well...
As some one coming from java background who has read about Rust for a bit and never really coded anything serious in it I had a few questions for the more experienced here. I would be very grateful if some of you could take the time to answer some/all of these. Any links etc or your personal experiences shared would be much appreciated.
-
What is the support like for high throughput low latency (ideally)Non blocking multi threaded code?
-
I understand that Rust itself is just core language and it depends on 3rd party libraries mainly imported through Cargo. Are there any sort of QA checks on these 3rd party libraries before they are published? How can we tell which ones are relatively mature and which ones arent ?
-
What is the support for creating GUI's in Rust similar to Java swing or FX?
-
My code will probably create lots and lots of new short lived objects. Think about a million+ per sec. In java world we rely on gc compaction ... what is the support in rust for avoiding Memory fragmentation ? Is that an issue I should even be concerned about?
-
Support for high performance network connectivity similar to Java NIO ?
-
Support for FIX protocol ... for e.g. an open source equivalent of quickfixj ... if there isnt one then can we interoperate with quickfixj from the java land ? or quickfix from the C++ land ?
-
Support for mature, efficient and reliable data structures similar to java collections ?
-
Support for an ORM library such as hibernate ? If there isnt one then is there a lower level alternative such as jdbc in Rust Core?
-
Benchmarking support similar to JMH ?
-
logging support for e.g. log4j ... high performance logging ?
-
Floating point precision library such as Java BigDecimal etc ? As we are dealing with money we cannot afford to have rounding errors etc.
- Please forgive me for using Java oriented terminology. Happy to explain further if needed.
Many Thanks,
Ali