-
tantivy
Discontinued Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust [Moved to: https://github.com/quickwit-oss/tantivy] (by quickwit-inc)
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
After researching a lot of options how to get the optimal performance combined to maximum code re-usability and cross-platform compilation. I found Rust as the best option to implement application's core. Except for the perfect package management tool, Rust has all the necessary bindings - Neon for Electron, Rust code easily compiles for Android. So it was relatively easy to implement the communication layer between Rust native code and those platforms like Node.Js (Electron) and Android.
It also allowed me to add new key features like full text search. It was much harder to implement it in Javascript. Thankfully, Rust has a great crate for full text search called tantivy.
Thanks to Rust, Giganotes application now has a fully multi-threaded core and works much faster than before.
GigaNotes is a a cross platform note taking application. It is written using Angular framework and was previously relying on some Electron / Cordova bindings for SQLITE, depending on the operating system it was build for. As the whole application code was written in Javascript, it had a lot of annoying performance issues because of single-threaded nature of Javascript engines. This was especially noticeable during the execution of heavy operations like synchronization of large set of notes. The recent technologies aiming to help developing multi-threaded JavaScript applications have been introduced recently, but still have a lot of limitations. Besides, the overall javascript performance is not goog enough for writing application's core. However, JavaScript is still pretty good for writing user interfaces of cross-platform applications, so I didn't consider to fully abandon it. As it said, each tool is good for its own purposes.