May 2020: Warp 10 release 2.6.0

We just published the 2.6.0 release of Warp 10. Discover the Macro Value encoder and all the details in this post.

Warp 10 release 2.6.0

On Wednesday, May the 27th of 2020, nearly two months after the release of the 2.5.0, we published the 2.6.0 release of Warp 10. A lot of new features and functions as well as some optimizations and few bug fixes come with this new release.

Discover the latest version of Warp 10.

Upgrading to 2.6.0

With the 2.6.0 release, we modified the bash script to start Warp 10 as well as the WarpConfig class it calls to get some configuration values. If you have already a pre-2.6.0 instance running, use this procedure to migrate to 2.6.0.

Bug Fixes

  • Fetching data with boundaries larger than max.encoder.size now returns the expected result.
  • The same goes with non-0 boundaries in conjunction with count=0 or end=Long.MAX_VALUE.
  • Fetching without timespan and a Metaset now works as expected.

New Features

An incredible new feature of this new release 2.6.0 is the addition of Macro Value Encoder. It simply allows you to send a macro name and a value to the /update endpoint of your Warp 10 instance, which will apply the macro to the value and store the result. In practice, you can use it to transform or encode your values in a specific way, for instance using Protocol Buffers or Arrow. More on that in an upcoming blog post.

You can now configure the Accelerator to use default strategies for reads, writes and deletes. In the in-memory configuration file, you can set accelerator.default.read, .write and .delete to cache or nocache and persist or nopersist. You can, for instance, read by default in the cache only unless a call to ACCEL.PERSIST is done before.

Store and Directory can be accessible in the UDP and TCP plugins scripts, like it is in the HTTP plugin scripts. If you want them to be accessible, don't forget to set egress.clients.expose = true in your configuration file.

Since 2.1.0, it is possible to override the configuration defined in the configuration files by environment variables and system properties. This can now be disabled by the configuration keys warp10.noenv and warp10.nosys. Likewise, when expanding variables, failures can be ignored with warp10.ignorefailedexpands.

New Docker image

As we noticed Warp 10 use on ARM devices is increasing, we now provide a multi-arch Docker image supporting AMD64, ARM64 and ARMv7.

You can now deploy Warp 10 even quicker than before for your embedded devices or your DIY projects on Raspberry Pi for instance.

New and Updated Functions

We have added a new set of functions to support Elliptic-Curve Cryptography: ECGEN, ECPRIVATE, ECPUBLIC, ECSIGN and ECVERIFY.

If you need to compress lists of longs, you can now use the ->VARINT and VARINT-> functions. They make use of the varint encoding which can greatly reduce the number of bytes needed to represent such lists.

Most Math functions now work on lists. Unary functions can be applied to each element of the list: ABS, COS, COSH, ACOS, SIN, SINH, ASIN, TAN, TANH, ATAN, SIGNUM, FLOOR, CEIL, RINT, ULP, NEXTUP, NEXTDOWN, SQRT, CBRT, EXP, EXPM1, LOG, LOG10, LOG1P, TORADIANS, TODEGREES, INCREMENTEXACT, DECREMENTEXACT, NEGATEEXACT and TOINTEXACT.

Binary functions can be applied to each element of a list and a single value: MAX, MIN, COPYSIGN, HYPOT, IEEEREMAINDER, NEXTAFTER, ATAN2, FLOORDIV, FLOORMOD, ADDEXACT, SUBTRACTEXACT and MULTPLYEXACT. Associative functions can also be applied to a single list: MAX, MIN, ADDEXACT, SUBTRACTEXACT and MULTIPLYEXACT.

Four new conversion functions allow you to manipulate geocells and GeoShapes: ->GEOCELL, GEOCELL->, ->GEOSHAPE and GEOSHAPE->.

For wrapping multi-value GTSs, you can now use WRAPMV! which is the uncompressed version of WRAPMV in the same way [! is the uncompressed version of [ in the GTS input format.

You can now apply ASREGS directly to a macro, which is equivalent to DUP VARS ASREGS.

To get the size of a PGraphics or PImage object, you can use the new Psize function.

Similarly, UNLIST works on Lists and UNMAP works on Maps, we added UNSET which works on Sets.

Performance Improvements

Warp 10 now boots faster than before, thanks to an optimization where the JVM is only launched once to read the configuration files before running Warp 10.

List creation in WarpScript is now faster and less memory hungry by avoiding a needless copy.

The parsing of hexadecimal data on /update should be faster thanks to the use of charAt instead of toCharArray.

Stay close, we'll soon write a post about the Macro value encoder.

Warp 10 2.6.0