The 2.8.0 and 2.8.1 versions of Warp 10 adds security and blockchain-related functionalities as well as lots of new functions and bug fixes.
The 2.8.0 version of Warp 10 was released on the 5th of May 2021, 8 months after the release of the 2.7.0 version. This is far longer than usual between two minor versions, so expect a lot of new functionalities! 130 Pull Requests have been merged since the 2.7.0, adding and extending functions, improving the performance, and fixing bugs on the platform.
The 2.8.1 is already out! It only fixes a publication issue which makes impracticable to have Gradle projects depends on the WarpScript lib.
The Warp 10 platform is built with security in mind. Tokens already allow to finely control the access to the data: who can read, update or delete the data. Warp 10 is also a platform to execute scripts and many instances are multitenant. We added capabilities to the tokens to also control which functions are accessible and to what extent. By adding capability attributes in a token, you can check and manipulate them with
CAPGET. More on that in an upcoming blog post.
As you may want to generate capabilities-only tokens, new attributes are also available in tokens. .noauth disallow authentication, .nofind and .nofetch disallow respectively find and fetch operations for a read token. You can truly craft tokens to your very need.
The 2.7.0 version is FLoWS-ready, which means you can add the FLoWS extension and execute FLoWS scripts. In the 2.8.1 version, we added a MacroResolver mechanism to be able to deploy FLoWS macros. This brings us a step closer to Warp 10 instances only using FLoWS.
A lot of new functions have been added to be able to work with the Ethereum blockchain:
ECRECOVERto find possible public keys from a hash and an associated ECDSA signature
KECCAK.256hash function and also 20 other hash functions
B58C->to convert from/to base58
RLP->to convert from/to RLP
Still, on the side of cryptography and security, functions have been added to sign and verify macros:
MSIGINFO. This can be particularly useful to make sure macros from a remote MacroRepository were not tampered with.
As you may need to access resources outside your instance, the
HTTP function was introduced to make HTTP requests easy and flexible. It offers much more options than
URLFETCH and relies on capabilities.
You can now resize your images using bilinear interpolation using
mapper.geo.outside, we added
mapper.geo.fence to tell if a point is inside a shape or not. This is especially useful to detect when a device enters or exits a particular area.
On top of new functions, the 2.8.1 release also improve functions:
FETCHcan return GTSEncoders and HBase TTLs
DELETEcan do a dry-run to return would-be deleted GTS
TOKENDUMPcan dump tokens defined in the tokens file
TOKENGENcan be used with custom keys to manipulate other instances' tokens
DTWcan work on locations, elevations and a window can be specified
**can work on a GTS and Lists
- Most math functions, like
FLOOR, can work on GTS
Pencodecan encode an Image
bucketizer.percentileimplement Hyndman's 9 types of percentile computation
GETcan get a single character in a String
SPLITnow accepts a limit parameter to early-abort splitting
GEO.INTERSECTScan tell if two GeoShapes intersect
==works on bytes and
!=works on GeoShapes
STRICTMAPPERcan operate on macros which are used in
TYPEOFnow returns FUNCTION for a Function
IMMUTABLEcan work on Map
->BIN, as well as
->HEXhave been merged
ECPRIVATEaccepts hexadecimal parameter
SIZEcan work on Macros
PcreateFontalways defaults on 12 size
+works on secure macros
~=is now less strict on valid parameter types
To simplify debugging, we improved error messages, when using the /fetch and /find endpoints for instance. We also named each and every thread created to be able to better understand thread dumps.
We made performance improvements, like context restoration for instance, which further improve WarpScript and FLoWS performances.
The HTTP plugin now has the option to accept streams of data, which can be used to create new ingestion endpoints with custom formats.
The last Python dependency was removed, so Warp 10 can be initialized and run without Python. This makes the Docker image even slimmer with this dependency removed!
Snapshots have been improved with more compatible objects and better formatting.
More low-level configurations are exposed for LevelBD, like
The 2.8.1 release fixes bugs which were present in the 2.7.0 version. Even if most of the fixes are already present in the 2.7.5, we encourage you to upgrade to the 2.8.1 version. Here are the bug fixes:
- Fix the
FETCHon the Standalone version
- Fix race condition in
- Fix concurrency in
- Fix possible hint overflow in InMemoryChunkSet
- Fix Shadow context save and restore
- Fix wrongly caught ATC Exception in
- Fix rare collision bug in DataLog file names
- Fix NPE when doing a
DELETEwith uninitialized memory chunks
- Fix WarpScriptMacroLibrary TTL
NOTwhen applied on a GTS only containing
- Fix retrieval of post boundary when at the end of LevelDB keyspace
op.mulcast in certain case
- Fix NPE in
!=when one of the two operands was
- Fix current tick for mappers when GTS has duplicate ticks
- Fix NPE in
URLFETCHwhen response has no body
Warp 10 2.8.1
Interested in Warp 10 but too busy to deploy it? That's exactly why we created the Warp 10 Sandbox, so start experimenting now.
Looking back over the past 12 months to review the news and events that marked the year 2020 for SenX and the Warp 10 Platform.
Use data replication to secure your data. Configure Warp 10 to enable High Availability!