Menu

Robomongo is now Robo 3T, with MongoDB 3.4 support

14 June 2017

We are very happy to announce the release of Robo 3T 1.1 with MongoDB 3.4 Support! In this release we have some fundamental changes, improvements and fixes.

One important change worth to mention is that we changed our name from Robomongo to Robo 3T because of trademark reasons (more details about this topic can be seen in section Renaming from Robomongo to Robo 3T).

1. MongoDB 3.4 Support

Since the latest version of MongoDB version 3.4 released, we were very eager to support this new MongoDB version as soon as possible. After being busy developing and releasing some critical features like SSL and Replica Sets, finally with this version Robo 3T also supports MongoDB 3.4.

Some key features in MongoDB 3.4 are linearizable read concerns, views, collation and new data type NumberDecimal (Decimal128).

A quick word about new data type NumberDecimal (Decimal128), it is added to represent 128-bit decimal-based floating-point values capable of emulating decimal rounding with exact precision. This functionality is intended for applications that handle monetary data, such as financial, tax, and scientific computations. (More about this topic can be seen in section 2 in this blog)

In MongoDB 3.2, the javascript engine used for both the mongo shell and for server-side javascript in mongod changed from V8 to SpiderMonkey. SpiderMonkey brought increased support for features defined in officially known as ECMAScript 2015 (aka 6th edition of ECMAScript, abbreviated as ES6).

Within this release, we have also added support for ECMAScript 2015 in Robo 3T shell.

Let's see some of the ECMAScript 2015 features with examples:

i. Arrow Functions

Arrow functions are a great addition to the JavaScript language. They make for short and concise code.

ii. Computed Property Names

Before ECMAScript 2015, computed property names such as [month + '20'] was causing the whole script to fail and give error. In this release they are usable. A simple practical example can be seen below:

What was the problem?
The problem was long lasting scripts were finishing prematurely and silently if the Robo 3T shell timeout (15 seconds by default) has expired.

Here is an example of the problem and fix in practice:

Note that, by default, the timeout for Robo 3T shell is 15 seconds, which can be seen/configured in robo3t.json config file as below:

...
"shellTimeoutSec" : 15,
...

What is the fix?
We added a mechanism to detect this timeout, a new error window to show the problem and a new dialog to configure Robo 3T shell timeout directly from the timeout error window as previosly shown above or from menu item "Options -> Change Shell Timeout..." shown below:

The new value of shell timeout ("shellTimeoutSec") is effective immediately on all existing/new tabs and persistent after program restart (saved into config file).

Note:
Before this fix, the workaround solution was to modify "shellTimeoutSec" : 15 parameter in Robo 3T config file and restart Robo 3T.

c. Security Improvement: OpenSSL version upgrade

As a part of transition to MongoDB 3.4, we have also upgraded our OpenSSL libraries to a newer version openssl-1.0.1u (2016-Sep-22).

Beside being a security improvement, this upgrade also makes sure that Robo 3T is consistent with latest MongoDB 3.4 which also uses the same OpenSSL version (1.0.1u) and can be seen in MongoDB 3.4 server logs at start:

d. Tool Chain Improvements: Modern C++14 features are enabled

This section is intended for developers who might be interested in contributing Robo 3T open source project.

Along with transition to MongoDB 3.4, we have updated our tool chain and it is now possible to use latest modern C++14 features in Robo 3T code base.
(Note: Theoretically, C++17 is the current latest C++ version, but we can say C++14 is the latest practically used and implemented by most compiler vendors.)

We are using the following modern compilers for Windows, Linux and MAC OS in order:

Visual Studio 2015 Update 3

GCC 5.4.1

Clang version: Apple LLVM version 7.3.0 (clang-703.0.31)

It is worth to mention that much more important and fundamental changes in C++ were actually introduced in C++11 Major release.

Mongo and MongoDB have always been registered trademark of MongoDB Inc, and as the database has grown in commercial importance, the company wants to clear up any confusion between its products and those built around the database. So, it has been talking to companies whose tools use the words Mongo or MongoDB in their names, about changing what they are called. That’s fair enough and we understand its point of view.

With this renaming the new location and the name for config file can be seen below:

6. CentOS Compatibility Problem

With transition to MongoDB 3.4, we updated our tool chain to modern tools, unfortunately some of the required packages were not available for CentOS (e.g. they were available for Ubuntu), and this caused Robo 3T not to work on CentOS 6 and 7.

Until these packages are available or we found another solution, unfortunately Robo 3T will not launch on CentOS 6 and 7. We hope this will be a temporary problem and hope to support again CentOS as soon as possible.