One of the top priorities at Memgraph is to allow as many people as possible to use Memgraph, which means to lower the entrance barrier as much as possible. Overall, this release exposes the power of graphs to more people because it makes usage and integration of Memgraph simpler.
Apple M1 is the first-class citizen
Memgraph v1.6 actually didn’t run on Apple M1 because there was an AMD64 instruction that didn’t work on the Rosetta translator. So, we decided to compile Memgraph natively for ARM. The whole effort wasn’t as huge as initially anticipated. There are just a couple of minor improvements:
- Use of C++20 cross-platform endianness construct (std::endian::little) because Memgraph’s property store depends on the little-endian order of bytes.
- Migration to librdtsc as a multi-platform library for reading TSC values. Thank you, Gabriele Ara, for an awesome open-source library!
Because Memgraph compiles only on Linux at the moment, we’ve packaged a Debian 11 binary and installed it into an Apple M1 compatible Docker container 🤯 Feel free to spin-up Memgraph on Apple silicon by using the Docker image available on our download page!
Pushing logs via WebSocket
One of the significant issues related to Memgraph Lab was seeing more details about what is happening inside the Memgraph engine. Since Memgraph Lab is a web app used in desktop and web environments, an obvious way to solve the problem was to implement WebSocket support and push the logs to everyone interested.
An easy way to get logs is to inspect the log files, but you have to be quite skillful if you want to get them via WebSocket. That’s where the new Memgraph Lab comes in 🥳️ stay tuned for the 2.0 release of Memgraph Lab, which will happen mid-March.
New streaming configuration options
Since Memgraph streaming capabilities are used more and more in the production environment, we started to add many features to access the streaming data as easily as possible. Specifically, Memgraph now supports configuring Kafka streams with CONFIG and CREDENTIALS clauses. These options become convenient when Memgraph is deployed in the enterprise environment.
Query modules management
Query modules are a vital part of Memgraph that offer powerful dynamic algorithms and enable extending existing functionalities with domain specific logic. With new built-in procedures (mg.create_module_file, mg.update_module_file, mg.delete_module_file, mg.get_module_file, mg.get_module_files), application has much tighter control over what lives inside Memgraph and what Memgraph will be able to execute on top of the streaming graph data.
Stay tuned for the already mentioned Memgraph Lab 2.0, which will leverage these capabilities to make defining query modules extremely smooth. Of course, any application can use these built-in modules boosting Memgraph’s ability to solve various problems.
Bugfixes and small improvements
- SHOW VERSION; This query returns the exact version of the Memgraph server.
- There was a nasty bug in our integration of the Python interpreter, which is now fixed. From now on, Python query modules shouldn’t mysteriously crash.
- On the streaming side, we fixed transaction handling in case of serialization error. Previously, a serialization error caused an exception to be thrown since nested transactions are not supported. After the fix, the transactions are handled correctly in the transaction retry logic.
- Temporal types LocalTime and LocalDateTime now correctly return subsecond precision time.
v2.2 was a cute and cuddly release of Memgraph. What follows is:
- Bolt over WebSocket and a bunch of WebAssembly clients
- FOREACH Cypher clause
- The ability to define custom functions used in expressions via a C API.
Just to name a few new capabilities 💪
If you spot any bugs or generally weird behavior, please drop us a line on our issues page and forum. And remember, if you need any kind of information about Memgraph, the documentation site will always be by your side. We also invite you to join our Discord Server and stay informed on everything Memgraph related!