In this page I have collected some software products realized by myself over time. So far, you will find two libraries written in C, which can be linked (either statically or dynamically) to your C/C++ programs (actually, googling a bit it’s relatively easy to find articles and tutorials on how to use dynamically linked C libraries in other languages, such as Kotlin/Native or Java/JNI, but I personally do not recommend this approach unless you have compelling reasons to do so).
Why C? Surprisingly, even if today there are a lot of modern languages, the old C devised by Dennis Ritchie in 1972 (50 years ago, more than a geological era in this field) is still one of the most spread languages all over the world. According to the TIOBE index, it is currently at the second position in the general rank (February 2022), but it was first until January 2022, when it was overtaken by Python.
This can be explained very simply. C is the lowest level among the high level programming languages. It is not a coincidence that it is almost the only language used in Operating Systems, Driver Development, Embedded Software, Compilers and Debuggers, and so on. It is a general-purpose, procedural computer programming language, which provides constructs that map seamlessly to typical machine instructions: using C you will have to handle pointers and bitwise operators, which translates efficiently into assembly. It does not support the Object Oriented Programming paradigm, so it is a bit more distant from the human way of thinking, but it is certainly more efficient in terms of executable produced as a result of compilation.
Software efficiency, in terms of reduced memory footprint of the produced code and reduced number of instructions needed to perform a task, is considered a bit outdated today, since the main focus is on business agility and short time to market. However, software efficiency is absolutely a key issue, in a broad sense it can even be considered an ecological choice (quoting an article from Bjarne Stroustrup we can say that: “Software efficiency equates to energy conservation”). According to an interesting paper published on Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering (2017), in most cases the C language is the fastest and most energy efficient choice.
Software that can be downloaded from this page is licensed under the Apache License v2.0 (see licensing terms here).
You are free to download and use it as you prefer, and nothing is due to the author.
However, if you think that this work is good enough for your purpose and you want to contribute somehow to my effort, you are free to donate.
libfmrt is a software library written in C language, which can be statically or dynamically linked to any C/C++ source code, providing Fast handling of Memory Resident Tables (hence the meaning of the acronym fmrt). It offers the ability to manage huge amount of data stored into in-memory tables, giving high efficiency and O(log2N) complexity. To achieve this requirement, in-memory data are stored into tables organized as AVL trees (see Tutorial on AVL Trees below).
libfmrt is not a Data Base. As such, it does not fit tasks that requires some typical DB properties, such as persistence or capability to perform SQL queries or to join tables. Rather, it is suitable for tasks that require optimized handling of volatile data, such as implementation of a fast in-memory cache or handling of great amount of temporary data.
libmixf is a library born time after time by collecting several routines written over time for different purposes. It provides a set of mixed functions (hence the name), organized into several categories:
The first revision of libmixf library (v.1.0.0) was ready in October 2019 and was initially named libmisc (where misc standed for miscellaneous). It contained most of the current functions, but Counters Handling functions were still not present.
In november 2019, revision v.2.0.0 introduced Counters Handling functions. Those two versions did not have a license, and being license free software they were actually proprietary. In June 2021, besides some minor changes, the library was licensed under the Apache v.2.0 license and its name was changed from libmisc to libmixf (a libmisc library was already available on the web). This explains why the first libmixf revision is v.2.1.0.