Change log
**********

3.8.3 - "Crates" - 6/10/2020
============================

Changes in this version
-----------------------

   * [daemon] Increase timeseries bucket I/O efficiency
   * [daemon] direct_prefix_get did not properly match prefixes
   * [daemon] Fix disk usage results
   * [api] Properly return "not implemented" instead of "internal error" for certain GROUP BY queries
   * [shell] Fix invalid alignment of results containing NULL values
   * [shell] Properly retrieve cluster status information on secured clusters
   * [grafana] Properly transform blob and string values

Known bugs
----------

   * [query] Null values groups may not be properly counted in aggregations (GROUP BY)
   * [daemon] Subpar aggregation performance for columns with blobs and strings

3.8.2 - "Crates" - 5/18/2020
============================

Changes in this version
-----------------------

   * [daemon] Fixed a bug where the daemon could incorrectly attempt to reaquire a non-recursive mutex, causing a deadlock
   * [daemon] Fixed a bug in the migration code that could cause a segmentation fault
   * [daemon] Fixed a hash computation bug in RocksDB that could cause a segmentation fault for files larger than 2 GiB
   * [daemon] Downgraded to RocksDB 6.5.3 due to a regression introduced by 6.7.3 that could cause a segmentation fault during compaction
   * [client] Fixed several ASOF related issues
   * [client] Fixed a memory leak in the client
   * [client] Fixed a bug in the client that could cause aggregation results to be incorrectly merged
   * [client] Fixed a bug in the client that would cause some queries to allocate too much memory and cause and "internal error"

Known bugs
----------

   * [query] Null values groups may not be properly counted in aggregations (GROUP BY)
   * [daemon] Subpar aggregation performance for columns with blobs and strings

3.8.1 - "Crates" - 4/20/2020
============================

Changes in this version
-----------------------

    * [daemon] Fixes a bug in timeseries deserializations (for blobs and strings) that could cause a memory corruption
    * [dbtool] Fixes a bug in dbtool that could cause a division by zero when scanning a database with less than 100 entries

3.8.0 - "Crates" - 4/6/2020
===========================

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Crates of Mallus <https://en.wikipedia.org/wiki/Crates_of_Mallus>`_ was a Greek language grammarian and Stoic philosopher, leader of the literary school and head of the library of Pergamum. [...] His chief work was a critical and exegetical commentary on Homer. He is also famous for constructing the earliest known globe of the Earth.

Changes in this version
-----------------------

    * Protocol version 35
    * [query] Support for INSERT TRUNCATE
    * [query] Significant performance improvement to GROUP BY queries for high-cardinality results
    * [daemon] Code is now optimized for Haswell architectures (use Core2 builds for older architectures)
    * [daemon] Properly honor cgroups memory restrictions (docker and kubernetes)
    * [daemon] Fixed backtrace functions log in Linux
    * [daemon] Upgraded to RocksDB 6.7.3
    * [client] Optimized client/server communications for better performance

3.7.0 - "Apollodorus" - 3/2/2020
================================

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Apollodorus of Seleucia <https://en.wikipedia.org/wiki/Apollodorus_of_Seleucia>`_ was a Stoic philosopher, and a pupil of Diogenes of Babylon. Apollodorus is famous for describing Cynicism as "the short path to virtue", and he may have been the first Stoic after the time of Zeno to systematically attempt to reconcile Stoicism with Cynicism.

Changes in this version
-----------------------

    * Protocol version 34
    * [daemon] Blob on-disk and in-memory speed and size optimizations (up to X4 more memory efficient, X2 faster insertions)
    * [daemon] Improve eviction and overall memory usage
    * [daemon] Removed a bottleneck on concurrent read-only operations on the same table
    * [query] Support for timestamp comparisons in WHERE clauses
    * [query] New function to count adjacent differences in a column
    * [query] Allow to insert NULL strings in INSERT INTO statements
    * [query] Allow WHERE (t.)col1 = (t.)col2 with multiple tables (e.g. with a find statement)
    * [client] Auto-stabilization is now disabled by default
    * [client] The get last error API call is now per handle

3.6.0 - "Antipater" - 2/3/2020
==============================

From`Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Antipater of Tarsus <https://en.wikipedia.org/wiki/Antipater_of_Tarsus>`_ was a Stoic philosopher. He was the pupil and successor of Diogenes of Babylon as leader of the Stoic school, and was the teacher of Panaetius. He wrote works on the gods and on divination, and in ethics he took a higher moral ground than that of his teacher Diogenes.

Changes in this version
-----------------------

    * Protocol version 33
    * [query] New STRING type
    * [query] Properly handle NULL values in GROUP BY
    * [query] Support for ASOF against a generated time range
    * [query] Increase the flexibility of WHERE to allow for column to column comparisons
    * [query] Allow for function composition in the SELECT clause
    * [api] New call to get more context information about the last error
    * [api] Protocol version mismatch are no longer considered as "internal errors"
    * [api] Ensure that network and timeout errors are always returned as network errors and not "internal errors"
    * [shell] An aggressive optimization could make the shell display non-existing null values
    * [daemon] Blobs could be stored in the wrong column family resulting in unexpected "alias not found" errors
    * [daemon] Greatly improve eviction heuristics in the case of bulk insertion
    * [daemon] License expiration time is now available in the statistics
    * [daemon] Upgrade to RocksDB 6.5.3
    * [daemon] Fix signal handling to prevent deadlocks on SIGABRT or SIGSEGV
    * [daemon] Default timeout values have been increased
    * [daemon] Configuration is logged at startup

3.5.0 - "Posidonius" - 12/23/2019
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Posidonius  <https://en.wikipedia.org/wiki/Posidonius>`_ "of Apameia" or "of Rhodes", as a Greek Stoic philosopher, politician, astronomer, geographer, historian and teacher native to Apamea, Syria. He was acclaimed as the greatest polymath of his age. His vast body of work exists today only in fragments.

Changes in this version
-----------------------

    * Protocol version 32
    * Official Prometheus connector
    * [query] Support for LEFT, RIGHT, and FULL ASOF joins between time series
    * [query] Support for HAVING clause
    * [query] Faster GROUP BY/WHERE for single table queries
    * [query] In addition to finding by tag, the FIND() keywork support find by prefix.
    * [query] Query results are no longer grouped by table by default
    * [query] Fix find tags for grant, revoke, and 'show' related queries
    * [daemon] Newer and faster statistics collection engine
    * [daemon] Chord communications happen in separate, higher priority partitions (**important change** see :ref:`cluster networking configuration <configuration-networking>`).
    * [daemon] Persistent cache to leverage a local NVMe/SSD disk when data is stored in a remote storage
    * [daemon] Detect ungraceful shutdown
    * [daemon] Fixed erasure related bugs
    * [daemon] Improved background compaction
    * [daemon] Improved timeseries data compression
    * [daemon] Reduced background migration/replication memory usage
    * [daemon] Reworked eviction algorithms and configuration for better performance and lower latency updates
    * [daemon] Significantly reduced trim all memory usage
    * [daemon] Better error context for log messages
    * [daemon] Explicit error message for configuration file errors
    * [tools] dbtool can now do offline scanning and repair of timeseries buckets
    * [api/daemon] Support for task kill
    * [api] If a value and a null value share the same timestamp, ensure their ordering is always preserved
    * [api] New explicit error code for invalid network buffer size.
    * [api] Properly account the case sensitivity of regex queries
    * [api] Properly null terminate prefix results
    * [api] Full stream encryption is now automatically enabled or disabled on the client side

3.4.3 - "Mnesarchus" - 10/15/2019
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Mnesarchus  <https://en.wikipedia.org/wiki/Mnesarchus_of_Athens>`_ of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

Changes in this version
-----------------------

    * Protocol version 31
    * [daemon] Properly manage timeseries erasure during transaction
    * [daemon] Tune RocksDB to avoid re-write
    * [daemon] Improve transaction speed
    * [daemon] Avoid unnecessary migrations

3.4.2 - "Mnesarchus" - 09/17/2019
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Mnesarchus  <https://en.wikipedia.org/wiki/Mnesarchus_of_Athens>`_ of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

Changes in this version
-----------------------

    * Protocol version 31
    * [api] Updated .NET API to support int64 and timestamp columns
    * [api] Updated  Node.js API to support nanosecond-precision timestamp
    * [daemon] Trimming, replicating and erasing no longer pollute the cache
    * [daemon] Changed default allocator to TBB
    * [daemon] Changed network buffer recycling strategy
    * [daemon] Improved log messages

3.4.1 - "Mnesarchus" - 08/12/2019
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Mnesarchus  <https://en.wikipedia.org/wiki/Mnesarchus_of_Athens>`_ of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

Changes in this version
-----------------------

    * Protocol version 31
    * [api] Updated NodeJS API to support authenticated connection and queries
    * [api] New function to load security credentials directly from a file
    * [query] Fixed a bug introduced in 3.4.0 with regards to the now() function

3.4.0 - "Mnesarchus" - 07/23/2019
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Mnesarchus  <https://en.wikipedia.org/wiki/Mnesarchus_of_Athens>`_ of Athens, was a Stoic philosopher, who lived c. 160-c. 85 BC. After the death of Panaetius (109 BC), the Stoic school at Athens seems to have fragmented, and Mnesarchus was probably one of several leading Stoics teaching in this era.

Changes in this version
-----------------------

    * Protocol version 31
    * [daemon] New, queryiable, configurable, audit trail that stores every update to the database
    * [daemon] Increased efficiency of automatic entries trimming
    * [daemon] Automatically adjust memory usage when it exceeds the authorized license
    * [daemon] All durations in the configuration are now in milliseconds
    * [daemon] Fixed several insertion and erasure issues that could occur in heavy write workloads
    * [query] Support for DELETE
    * [query] DROP and ALTER can now work on multiple tables
    * [query] Fixed parsing issues where ORDER BY would not be allowed with WHERE clauses
    * [tools] New cluster-to-cluster replication tool that can be used for synchronization and migration
    * [api] Significant speed improvements to the batch inserter
    * [shell] Better, more contextual, error reporting
    * [shell] Various cosmetic improvements
    * [protocol] The client API can now more accurately inform the user if it connects to a server that is not a QuasarDB cluster

3.3.0 - "Panaetius" - 05/13/2019
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Panaetius <https://en.wikipedia.org/wiki/Panaetius>`_ of Rhodes was a Stoic philosopher. [...] With Panaetius, Stoicism became much more eclectic. His most famous work was his *On Duties*, the principal source used by Cicero in his own work of the same name.

Changes in this version
-----------------------

    * Protocol version 30
    * [query] New aggregation to query the size of a timeseries on disk
    * [api] Can expire timeseries data to reach a certain given size
    * [shell] More explicit and user-friendly error messages
    * [daemon] Brand new statistics mechanics for live-monitoring and performance diagnostics

3.2.0 - "Hierocles" - 03/29/2019
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Hierocles <https://en.wikipedia.org/wiki/Hierocles_(Stoic)>`_ was a Stoic philosopher. [...] Hierocles is famous for a book called *Elements of Ethics*.

Changes in this version
-----------------------

    * Protocol version 30
    * [security] Fine-grained access control.
    * [security] Support for default user privileges.
    * [query] Support for ALTER TABLE.
    * [query] Support for SHOW GRANTS.
    * [query] Support for SHOW TABLES.
    * [query] GROUP BY performance improvements.
    * [query] Fixed multiple GROUP BY related bugs.
    * [query] Support for moving average, minimum, and maximum.
    * [query] Support for cumulative sum and distinct count.
    * [query] Greatly improved the performance of the lookup function.
    * [daemon] Optimize ORDER BY and LIMIT processing.
    * [daemon] Switched memory allocator to jemalloc.
    * [daemon] Fixed a clustering bug when the cluster was using stream encryption.
    * [API] Reworked Python API packaging.
    * [API] Python API pandas integration.
    * [API] Greatly improved batch insertion API performance.
    * [API] New low-level, high-performance interface for batch insertion.
    * [import] Greatly improved TSV/CSV importing tool performance and heuristics.
    * [export] New data exporting tool to export timeseries data to CSV files.
    * [REST] Various bugs and documentation fixes.
    * [REST] New configuration file format.
    * [shell] Display the shard size when displaying the time series information with SHOW.
    * [network] Reused sockets could ignore buffering parameters.

3.1.0 - "Diodotus " - 01/08/2019
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Diodotus <https://en.wikipedia.org/wiki/Diodotus_the_Stoic>`_ was a Stoic philosopher, and was a friend of Cicero. [...] He instructed Cicero in Stoic philosophy and especially Logic.

Changes in this version
-----------------------

    * Protocol version 30
    * [query] Support for ALTER TABLE and schema migration
    * [query] LIMIT is now supported with OFFSET and ORDER BY
    * [query] Extended support for WHERE clause in GROUP BY
    * [query] Support for client-side lookup
    * [shell] Added option to manage network buffer size in the shell
    * [shell] Fixed display result order for ORDER BY
    * [daemon] Major performance update for insertion speed in synchronous and asynchronous mode
    * [daemon] Significantly reduced memory usage of the asynchronous timeseries insertion
    * [daemon] Clarified persistence options
    * [daemon] Added more customization options to the Helium persistence layer

3.0.0 - "Posidonius" - 11/21/2018
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Posidonius <https://en.wikipedia.org/wiki/Posidonius>`_ was a Greek Stoic philosopher, politician, astronomer, geographer, historian and teacher native to Apamea, Syria. He was acclaimed as the greatest polymath of his age. His vast body of work exists today only in fragments.

Changes in this version
-----------------------

    * Protocol version 30
    * [REST] New REST API bridge.
    * [GUI] New administration console.
    * [query] Support for arbitrary aggregations in addition to time aggregations with "GROUP BY".
    * [query] New "TIME_JOIN" feature.
    * [query] Support for "CREATE", "INSERT", and "DROP".
    * [query] Support for "ORDER BY"
    * [query] Support for fully qualified columns.
    * [query] Added support for "geohash64" function.
    * [shell] Fixed various results display bugs.
    * [daemon] Server side profiling.
    * [daemon] Improved indexes for better speed and disk usage.
    * [daemon] Internal changes in the protocol to deliver lower latencies for all queries.
    * [daemon] Compression optimizations.
    * [daemon] Purging the cache will now also purge the filesystem cache on Windows and Linux.
    * [daemon] Changed default parameters so that it can run on a default Linux installation.
    * [daemon] Anti DoS feature: limit the amount of data a single request may send.
    * [API] New batch insert API with optional asynchronous disk writing for very high disk throughputs.
    * [API] Built-in, configurable, automatic transactions retryer.
    * [API] Performance API to retrieve the server performance data.
    * [API] Optional, detailed, error message in the query result.
    * [packaging] Official ARM32 and ARM64 support.
    * [persistence] Upgraded to Helium 3.1.2
    * [persistence] Upgraded to RocksDB 5.14.2

2.7.0 - "Eratosthenes" - 07/02/2018
===================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Eratosthenes <https://en.wikipedia.org/wiki/Eratosthenes>`_ was a Greek mathematician, geographer, poet, astronomer, and music theorist. He was a man of learning, becoming the chief librarian at the Library of Alexandria. He invented the discipline of geography, including the terminology used today.

Changes in this version
-----------------------

    * Protocol version 20
    * [daemon] Compression optimizations.
    * [daemon] Better docker and NAT support. The daemon can advertise an address different from the one it listens to.
    * [daemon] Significant performance improvement to the first() aggregation function.
    * [daemon] Fixed an issue where timeseries were not automatically trimmed.
    * [query] Support for parsing IPv4 addresses as 64-bit integers.
    * [query] Support for aliases.
    * [query] Support for sub-ranges. You can now select months, days, and time from a larger range for precise ranges.
    * [shell] Fixed several bugs which could result in unaligned tables being displayed.
    * [api] Published Java API on Maven Central.

2.6.0 - "Cleomedes" - 06/01/2018
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Cleomedes <https://en.wikipedia.org/wiki/Cleomedes>`_ was a Greek astronomer who is known chiefly for his book On the Circular Motions of the Celestial Bodies.

Changes in this version
-----------------------

    * Protocol version 20
    * [api] Official R API
    * [api] Official Grafana support
    * [api] High performance multi table bulk insert
    * [query] Gregorian calendar support
    * [query] A WHERE clause can now be applied on aggregations
    * [query] Support for regular expressions in blob comparisons
    * [query] Support for bitwise "and" operator in integer comparisons
    * [daemon] Greatly improved bulk insertion speed
    * [api] Removed obsolete filter in the API
    * [query] Fixed count related issues on blobs and timestamps columns
    * [query] SELECT count(*) now returns a valid result in all cases
    * [query] geometric mean is now properly accepted by SELECT
    * [query] Allows optional ";" at the end of queries
    * [daemon] Added more systemtap probes for finer tuning

2.5.0 - "Theodosius" - 04/20/2018
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Theodosius of Bithynia <https://en.wikipedia.org/wiki/Theodosius_of_Bithynia>`_ was a Greek astronomer and mathematician who wrote the Sphaerics, a book on the geometry of the sphere.

Changes in this version
-----------------------

    * Protocol version 20
    * [query] A WHERE clause can now have an arbitrary number of columns.
    * [query] The WHERE clause now supports comparisons for blobs.
    * [persistence] Optimized data storage and compression algorithms resulting in significant savings for timeseries with more than three (3) columns.
    * [daemon] Greatly reduced the probability of conflicts during time series insertions.
    * [api] When a cluster is unstable, the API will now wait a configurable amount of time for stabilization.
    * [api] hset are no longer exposed in the API.
    * [shell] Added a new command to display the current status of a cluster.
    * [web bridge] The query API is now available through REST.
    * [packaging] New Core2 build. The Core2 build enables you to run quasarDB on older generation of Intel-compatible processors. The default build requires a Westmere or better micro-architecture.
    * [packaging] We successfully built quasardb for the ARM64 architecture. Build available upon request.
    * [licensing] We've updated the licensing system. Previously attributed licenses will no longer work. Contact you quasarDB Solutions Architect for an updated license. This does not change
      the price or the validity of your current license.

2.4.0 - "Aratus" - 03/11/2018
=============================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Aratus <https://en.wikipedia.org/wiki/Aratus>`_ was a Greek didactic poet. His major extant work is his hexameter poem Phenomena, the first half of which is a verse setting of a lost work of the same name by Eudoxus of Cnidus. It describes the constellations and other celestial phenomena. The second half is called the Diosemeia , and is chiefly about weather lore.`

Changes in this version
-----------------------

    * Protocol version 20
    * [query] Support for arithmetic expressions in SELECT statements
    * [query] Support for multiple ranges in SELECT statements
    * [query] Initial support for WHERE clause - only single column queries are currently supported
    * [persistence] Greatly improved data compression (up to 5x)
    * [aggregations] Added specific SSE 4.2 optimizations for machines without AVX and AVX2
    * [aggregations] Significantly increased the speed of integer 64-bit aggregations (up to 6x)
    * [aggregations] Significantly increased the speed of sum_of_squares and product aggregations functions (up to 4x)
    * [python] Exposed query API
    * [shell] Fixed a bug where the columns would be displayed in the wrong order for a star SELECT

2.3.0 - "Epictetus" - 02/15/2018
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Epictetus <https://en.wikipedia.org/wiki/Epictetus>`_ was a Greek Stoic philosopher. He was born a slave at Hierapolis, Phrygia (present day Pamukkale, Turkey) and lived in Rome until his banishment, when he went to Nicopolis in northwestern Greece for the rest of his life. [...] Epictetus taught that philosophy is a way of life and not just a theoretical discipline. To Epictetus, all external events are beyond our control; we should accept calmly and dispassionately whatever happens. However, individuals are responsible for their own actions, which they can examine and control through rigorous self-discipline.

Changes in this version
-----------------------

    * Protocol version 20
    * Queries can now leverage the result of tag based lookup
    * Fixed a bug where skewness computation could be invalid on very large time series
    * [api] The query language is now available through the API
    * [api] Some asynchronous operations did not properly retry on error, resulting in sporadic network errors popped back to the user
    * [admin] Adding an existing user will fail instead of overwritting the old one
    * [packaging] The libc++ API is now bundled on MacOS and FreeBSD for greater compatibility
    * [kernel] Accross the board performance improvements and memory usage reduction
    * [kernel] Upgraded to Boost 1.66
    * [persistence] Upgraded to RocksDB 5.9.2

2.2.0 - "Chrysippus" - 12/21/2017
=================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Chrysippus of Soli <https://en.wikipedia.org/wiki/Chrysippus>`_ was a Greek Stoic philosopher. He was a native of Soli, Cilicia, but moved to Athens as a young man, where he became a pupil of Cleanthes in the Stoic school. When Cleanthes died, around 230 BC, Chrysippus became the third head of the school. A prolific writer, Chrysippus expanded the fundamental doctrines of Zeno of Citium, the founder of the school, which earned him the title of Second Founder of Stoicism.

Changes in this version
-----------------------

    * Protocol version 20
    * Brand new query language! Available as a preview in the shell. Try ``select arithmetic_mean(volume) from stocks in range(now(), -1d) group by hour`` now! :-)
    * Two new timeseries column types are supported: signed 64-bit integers and nanosecond timestamps
    * Increased memory limit of the community edition from 2 GiB to 4 GiB
    * Greatly improved timeseries insertion speed when data is interleaved
    * Fixed bug in kurtosis computation
    * Fixed a bug where erasing an empty range could result in an uncommitted transaction
    * [api] Support for row-level bulk get and insertion
    * [api] Transparently retry connection on asynchronous requests
    * [api] Make it possible to query the currently configured timeout
    * [shell] Persists command history
    * [shell] Support for syntax highlighting and better completion
    * [shell] Added command for suffix get
    * [persistence] Mounting a Helium volume will now be significantly faster on Windows


2.1.0 - "Cleanthes" - 11/01/2017
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

    `Cleanthes, of Assos, <https://en.wikipedia.org/wiki/Cleanthes>`_ was a Greek Stoic philosopher and successor to Zeno of Citium as the second head (scholarch) of the Stoic school in Athens. Originally a boxer, he came to Athens where he took up philosophy, listening to Zeno's lectures. He supported himself by working as a water-carrier at night. [...] He originated new ideas in Stoic physics, and developed Stoicism in accordance with the principles of materialism and pantheism.

Changes in this version
-----------------------

    * Protocol version 20
    * This build now targets the Westmere micro-architecture
    * Native support for distributed time series and server-side aggregation (with AVX support when available)
    * Cryptographically strong authentication (enabled by default)
    * Full network traffic encryption using AES GCM 256 (disabled by default)
    * Levyx Helium persistence layer for high performance storage
    * New querying language with support for distributed joins over tags
    * New API to count prefixes and suffixes
    * Empty entries are now allowed in deques
    * C API: Unified memory management functions for more convenience
    * Improved web bridge error messages logging
    * Improved performance for blob read operations
    * Reduced the impact on cluster performance when a node joins the ring
    * Improved eviction and trimming performance
    * The qdbsh output is colored on terminals that support it
    * New API calls: cluster_purge_cache and cluster_wait_for_stabilization

2.0.0 - "Aristotle" - 01/17/2017
================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

   `Aristotle <https://en.wikipedia.org/wiki/Aristotle>`_ was a Greek philosopher and scientist born in the city of Stagira, Chalkidice, on the northern periphery of Classical Greece. [...] His writings cover many subjects – including physics, biology, zoology, metaphysics, logic, ethics, aesthetics, poetry, theater, music, rhetoric, linguistics, politics and government –
   and constitute the first comprehensive system of Western philosophy

Building on the solid foundation of quasardb 1.2, quasardb 2.0 is now fully transactional and support distributed secondary indexes while managing to push the performance limits even further.

Changes in this version
-----------------------

    * Protocol version 20
    * Distributed ACID transactions
    * Distributed secondary-indexes (tags)
    * Distributed double-ended queues (deques)
    * Native atomic signed 64-bit integers operations
    * Native support for Mac OS X
    * Many usability improvements in all tools
    * Switched from LevelDB to a customized RocksDB persistence layer
    * New APIs: Node.js and PHP
    * Greatly improved .NET and Java APIs
    * Performance level: ludicrous
    * And so much more!

Changes in the version
----------------------

1.2.1 - "Anaximander" - 05/05/2015
==================================

This release is our most scalable release ever and has been tested with up to 25,000 concurrent connections on a single node running on an entry-level dedicated server.

This release is fully compatible with 1.2.0 and the whole 1.1.x "Pythagoras" line.

Changes in this version
-----------------------

    * Protocol version: 14
    * Increased default TCP listen queue to 16,384 on all platforms
    * Stabilization is now less agressive in case of node failures, delivering an even better availability
    * Multi-connect is now done in a random order
    * Removed network usage graphs from the administration console
    * Fixed minor bugs in the configuration generation tool (https://www.quasardb.net/confgen/)

1.2.0 - "Anaximander" - 02/09/2015
==================================

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

   `Anaximander <https://en.wikipedia.org/wiki/Anaximander>`_ was a pre-Socratic Greek philosopher who lived in Miletus,[3] a city of Ionia (in modern-day Turkey). [...] He was an early proponent of science and tried to observe and explain different aspects of the universe, with a particular interest in its origins, claiming that nature is ruled by laws, just like human societies, and anything that disturbs the balance of nature does not last long.

This release unlocks even more performance with a brand new load-balancing algorithm. Without any configuration, reads will be done on the nearest, most available replica, resulting is better network usage and reduced latency.

We are also pleased to announce a brand new PHP API. Millions of websites accross the world can now benefit from quasardb unrivaled performance.

This release is fully compatible with the 1.1.x "Pythagoras" line.

Changes in this version
-----------------------

    * Protocol version: 14
    * New API: PHP
    * Reads are now automatically balanced, taking distance and load into account
    * When no licence is available, quasardb now runs in "free" mode for evaluation purposes
    * Fixed several glitches in the administration console and improved overall responsiveness
    * Fixed a condition where an invalid time stamp could be displayed in the log file
    * Web bridge: added an error message when the listening port isn't available

1.1.5 - "Pythagoras" - 12/15/2014
=================================

The release features significant improvements to the administration console and now persists the statistics.

This release is fully compatible with 1.1.0, 1.1.1, 1.1.2, 1.1.3 and 1.1.4.

Changes in this version
-----------------------

    * Protocol version: 14
    * Major improvements to the administration console
    * Statistics are now persisted within quasardb
    * Fixed a retro-compatibility issue where 1.1.3 clients requests could be misunderstood by 1.1.4+ servers
    * Fixed a reconciliation issue where a partitioned node rejoining a cluster could not correctly propagate an update
    * The shell now displays a meaningful error message when no remote daemon is available
    * All binaries and all platforms except FreeBSD now statically link against the libc++1 library for convenience
    * A warning is now emitted when a node reaches 90% of its quota
    * Java API : the multi-connect feature is now supported
    * FreeBSD installations now require FreeBSD 10 and Clang 3.5.
    * Windows clients now require Visual Studio 2013 Update 4.
    * Upgraded to Intel TBB
    * Upgraded to Boost 1.57.0
    * Upgraded to LevelDB 1.18


1.1.4 - "Pythagoras" - 06/30/2014
=================================

This release features a brand new .NET API and various improvements to the administration interface.

This release is fully compatible with 1.1.0, 1.1.1, 1.1.2 and 1.1.3.

Changes in this version
-----------------------

    * Protocol version: 14
    * Reduced the dependencies of all binaries through static linking on all platforms
    * .NET API: Fully functionnal .NET 4.0 API
    * Administration console: added more information, fixed numerous glitches and greatly reduced memory usage
    * Daemon: greatly reduced inter-node traffic in a stable cluster
    * Shell: greatly improved online help
    * Linux: upgraded to gcc 4.8.2
    * Upgraded to Intel TBB 4.2 Update 4
    * Upgraded to LevelDB 1.17

1.1.3 - "Pythagoras" - 04/29/2014
=================================

This maintenance release features a brand new administration interface, enabling users to monitor small to large clusters in just a couple of clicks!

This release is fully compatible with 1.1.0, 1.1.1 and 1.1.2.

Changes in this version
-----------------------

    * Protocol version: 14
    * Administration console: brand new administration console with many exciting features
    * Daemon and web bridge: support for file based configuration
    * Daemon: fixed a race condition where an error could be returned to successful long standing batch operations
    * Web bridge: added CPU, disk and memory usage information
    * Java API: it is now possible to specify an expiry for all write operations
    * Comparison tool: fixed progress display
    * Upgraded to LevelDB 1.16

1.1.2 - "Pythagoras" - 02/03/2014
=================================

About
-----

This maintenance release focuses on disk usage control. It is now possible to limit the persisted size. When the limit is reached, any operation which would result in a size increase will be aborted and an error will be returned.

This release is fully compatible with 1.1.0 and 1.1.1.

Changes in this version
-----------------------

    * Protocol version: 14
    * Daemon: added option to limit the persisted size
    * Daemon: fixed long log paths parsing
    * Web bridge: added network usage information
    * Comparison tool: new ``put`` (only) command
    * Comparison tool: added progress bar
    * Shell: fixed space related parsing bug
    * Upgraded to LevelDB 1.15

1.1.1 - "Pythagoras" - 01/07/2014
=================================

About
-----

This maintenance release comes with many new features and performance improvements. It is fully compatible with release 1.1.0.

Changes in this version
-----------------------

    * Protocol version: 14
    * Daemon: various optimizations to reduce latency
    * Comparison tool: support for multithreaded benchmarks
    * C/C++ API: Added client-side logging
    * C++ API: Batch and prefix operations can now be chained
    * Java API: Support for batch operations
    * Java API: Support for expiry
    * Python API: Support for batch operations
    * Upgraded to LevelDB 1.14
    * Upgraded to TBB 4.2
    * Upgraded to Boost 1.55.0

1.1.0 - "Pythagoras" - 09/16/2013
=================================

About
-----

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

   `Pythagoras of Samos <https://en.wikipedia.org/wiki/Pythagoras>`_ was an Ionian Greek philosopher, mathematician, and founder of the religious movement called Pythagoreanism. [...] Pythagoras made influential contributions to philosophy and religious teaching in the late 6th century BC. He is often revered as a great mathematician, mystic and scientist, but he is best known for the Pythagorean theorem which bears his name.

This release brings major new features. quasardb now support prefix based research, configurable expiration and batch operations. These features are brought to you without compromising on performance or reliability.

Changes in this version
-----------------------

    * Protocol version: 14
    * API: Support for prefix-based research
    * API: Support for configurable expiration
    * API: Support for batch operations (C/C++ only)
    * API: Deprecated streaming API
    * Upgraded to LevelDB 1.13

1.0.1 SR1 - "Zeno" - 09/11/2013
===============================

About
-----

This version is 100 % compatible with quasardb 1.0.1 "Zeno" and only includes important fixes.

Changes in this version
-----------------------

    * Protocol version: 13
    * Windows API: *reliability fix* The unability to securely generate an unique path could result in an ungraceful failure of qdb_open
    * Daemon: Clarified many error messages
    * Daemon, web bridge: Daemonization command switch on UNIXes
    * Daemon, web bridge: The HUP signal is now ignored on UNIXes
    * FreeBSD: upgraded to Clang 3.3
    * Upgraded to Boost 1.54.0


1.0.1 - "Zeno" - 07/08/2013
===========================

About
-----

**This maintenance release includes an important security fix.**

No new functionnality has been added.

Changes in this version
-----------------------

    * Protocol version: 13
    * Daemon: **security fix** Carefully crafted messages could cause the server to allocate an excessive amount of memory resulting in a denial of service
    * Console: Fixed glitches introduced in 1.0.0
    * API: The reported persisted size is now much more accurate
    * Daemon: Greatly improved performance for all status APIs
    * Daemon: Reworded some network error messages for clarity
    * Daemon: Minor performance improvement (less than 5%) for requests smaller than 1 KiB
    * Upgraded to Visual Studio 2012 Update 3
    * Upgraded to TBB 4.1 update 4
    * Upgraded to LevelDB 1.12

1.0.0 - "Zeno" - 06/10/2013
===========================

About
-----

From `Wikipedia <https://en.wikipedia.org/wiki/Main_Page>`_, the free encyclopedia:

   `Zeno of Citium <https://en.wikipedia.org/wiki/Zeno_of_Citium>`_ was the founder of the `Stoic <https://en.wikipedia.org/wiki/Stoicism>`_ school of philosophy, which he taught in Athens from about 300 BC. [...] Stoicism laid great emphasis on goodness and peace of mind gained from living a life of Virtue in accordance with Nature.

After years of research and developement it is an overwhelming pleasure to annonce the availability of version 1.0.0. The last eighteen months have been dedicated to the everlasting quest of performance and stability. It is now time for the version number to reflect the level of quality and trustworthiness that quasardb delivers.

A big *thank you* to all our families, friends, partners and customers for their continued support that helped make quasardb a reality.

Changes in this version
-----------------------

    * Protocol version: 12
    * API: New atomical conditional remove (remove_if) operation
    * API: New atomical get and remove (get_remove) operation
    * API: Can now iterate on entries
    * Daemon: Replica do not stay hot in memory to reduce memory usage
    * Daemon: Timeout for inter-node communications is now properly accounted on all platforms
    * Daemon: Fixed a race condition where a session could be freed twice during shutdown
    * Upgraded to TBB 4.1 update 3
    * Upgraded to LevelDB 1.10

0.7.4 - 03/18/2013
==================

Changes in this version
-----------------------

    * API: Can now retrieve a remote node's configuration in JSON format
    * API: Can now retrieve a remote node's topology in JSON format
    * API: Can now remotely stop a node
    * C/C++ API: Added a qdb_e_uninitialized value to the error enumeration
    * Python API: Improved documentation and added examples
    * Web bridge: Richer global status information
    * Web bridge: More verbose logging
    * Daemon: In case of a critical error a detailled status will be dumped to a separate file on disk (in addition to previously existing log errors)
    * Daemon: Stabilization is one order of magnitude faster in case of failure
    * Daemon: Improved eviction speed in all cases
    * Daemon: The daemon now exits right away if the listening port is unavailable
    * Daemon: Better and more coherent network log messages
    * Daemon: A node that was started with incoherent parameters will now be forced out of the ring
    * Daemon: Fixed ignored remove_all requests issue
    * FreeBSD: upgraded to clang 3.2 and libc++ 1
    * Upgraded to Boost 1.53.0

0.7.3 - 02/11/2013
==================

Changes in this version
-----------------------

    * New C++ API!
    * C and Java API: Added qdb_error to translate an error code into a meaningful message
    * C/C++ API: Can connect to multiple remote hosts at a time for increased client-side resilience
    * Java API: Added support for ``get_update`` and ``compare_and_swap`` operations
    * Console: Now display statistics for ``get_update`` and ``compare_and_swap`` operations
    * Daemon: Fixed invalid replication parameter logging
    * Daemon: Fixed invalid total size reporting
    * Daemon: Improved replication factor documentation

0.7.2 - 01/14/2013
==================

Changes in this version
-----------------------

    * Now officially named quasardb!
    * Daemon: Minimized thread switching to reduce latency
    * Various minor optimizations and improvements
    * Windows: Upgraded to Visual Studio 2012
    * Upgraded to Boost 1.52.0
    * Upgraded to TBB 4.1 SP1
    * Upgraded to LevelDB 1.9

0.7.1 - 10/15/2012
==================

Changes in this version
-----------------------

    * Daemon: Integrated licensing mechanism
    * Daemon: Fixed invalid statistics update
    * Upgraded to Boost 1.51.0

0.7.0 - 09/04/2012
==================

Changes in this version
-----------------------

    * Daemon: Automatic, integrated and distributed replication up to 4 copies
    * Daemon: Support for global configuration
    * Daemon: Fixed bug that could cause a connection reset between two nodes if they were using a half-duplex channel
    * Benchmarking tool: Added Redis support
    * Client API: Fixed bug that prevented the 32-bit Windows API to add entries larger than 4 GiB
    * Java API: Greatly improved performances, up to 100%!
    * Greatly improved the `documentation <https://doc.quasardb.net/>`_
    * Upgraded to Boost 1.50.0
    * Known bug: the eviction, pagein and size counts reported in the administration console are invalid

0.6.66 - 07/02/2012
===================

Changes in this version
-----------------------

    * Client API: New streaming API (C only)
    * Client API: New compare and swap operation (C only)
    * Client API: ``remove_all`` is no longer experimental
    * Daemon: Faster lookup on clusters with more than 20 nodes
    * Daemon: Faster stabilization on clusters with more than 5 nodes
    * Daemon: Automatically detects the best memory eviction threshold (can be overriden)
    * Daemon: changed the default port from 5909 to 2836 (can be overriden)
    * Java API: Fixed invalid method name (delete instead of remove)
    * Upgraded to LevelDB 1.5

0.6.5 - 06/08/2012
==================

Changes in this version
-----------------------

    * Client API: Major performance increase (up to 100%) for small entries (below 1 KiB)
    * Client API: Added more error codes
    * Client API: Added status query function
    * Client API: Added new, atomic, ``get_and_update`` function
    * Client API: Added experimental ``remove_all`` function
    * Daemon: Greatly improved scalability for machines with more than 4 physical cores
    * Daemon: Removed obsolete options
    * Daemon: Improved Windows console logging performance
    * FreeBSD: Now requires FreeBSD 9.0 or later
    * FreeBSD: switched from gcc to Clang
    * Upgraded to LevelDB 1.4
    * Upgraded to Boost 1.49.0
    * Upgraded to TBB 4.0 SP4

0.6.0 - 01/16/2012
==================

Changes in this version
-----------------------

    * Python API: Brand new Python API!
    * Daemon: new "transient" option
    * Daemon: Improved memory management
    * Daemon: Improved performance for large entries
    * Daemon: Reduced latency
    * Upgraded LevelDB

0.5.2 - 11/14/2011
==================

Changes in this version
-----------------------

    * Windows: Digital signatures now include a timestamp.
    * Web bridge: Improved the internal data exchange format.
    * Daemon: When exiting under heavy load, the daemon could deadlock.
    * Daemon: Slight performance increase.
    * Client API: Improved performance on unreliable networks.
    * Upgraded LevelDB
    * Upgraded to TBB 4.0 SP1

0.5.1 - 10/01/2011
==================

Changes in this version
-----------------------

    * Java API: Major rework, better and easier than before!
    * Daemon: Added an icon in the Windows binary.
    * Daemon: Properly account the idle session parameter.
    * Daemon: Exit with an appropriate error message when the listening port is unavailable.
    * Client API: Made the connection process more resilient.
    * Upgraded LevelDB

0.5.0 - 08/01/2011
==================

Changes in this version
-----------------------

    * Peer-to-peer network distribution
    * Web bridge with JSON/JSONP interfaces
    * Java API
    * New persistence layer based on `LevelDB <https://github.com/google/leveldb>`_
    * Lightweight HTML5 monitoring console
    * Reduced overall memory load
    * Improved performance by 10-20 %
    * Removed legacy code and API
    * `Documentation <https://doc.quasardb.net/>`_!
    * The quasardb shell now handles binary input and output
    * Upgraded Linux and FreeBSD compilers to gcc 4.6.1
    * Upgraded to Boost 1.47.0

0.4.2 - 05/26/2011
==================

Changes in this version
-----------------------

    * Increased reliability
    * Major performance improvements for entries larger than 50 MiB
    * More verbose logging (if requested)
    * Reduced latency under extreme load
    * Reduced memory footprint
    * fix: The 0.4.1 Linux API could not be linked to due to a misconfiguration on our build machine

0.4.1 - 05/07/2011
==================

Changes in this version
-----------------------

    * Multiplatform Python API package with installer
    * Fixed FreeBSD invalid rpath
    * qdbsh can now process standard input and output

0.4.0 - 04/22/2011
==================

Changes in this version
-----------------------

    * Python API
    * Improved server network code
    * API and server are now available as two distinct packages
    * Fixed file logging date format
    * Installer for Windows version
    * Upgraded to Boost 1.46.1
    * Upgraded TBB to version 3.0 Update 6
    * Upgraded Windows compiler to Visual Studio 2010 SP1
    * Upgraded Linux and FreeBSD compilers to gcc 4.6.0

0.3.2 - 02/26/2011
==================

Changes in this version
-----------------------

    * Windows binaries are now digitally signed.
    * High-performance slab allocator is now used for logging.
    * Fixed a minor memory leak.
    * The Linux and FreeBSD binaries now have a rpath to automatically
      load libraries present in quasardb's lib subdirectory.
    * Upgraded TBB to version 3.0 Update 5

0.3.1 - 02/22/2011
==================

Changes in this version
-----------------------

    * Asynchronous standalone TCP (IPv4 and IPv6) server
    * Fast monte carlo eviction
    * New high-performance slab memory allocator
    * Shell client
    * New API
    * May contain up to 1% of awesomeness

0.2.0 - 11/11/2010
==================

Changes in this version
-----------------------

    * Update and remove now accessible via the C API
    * More efficient logging
    * Improved internal memory model
    * Internal statistics

0.1.0 - 07/26/2010
==================

Changes in this version
-----------------------

    * First official beta version!
    * nginx support
    * User may add/generate/query through the C API
    * High performance asynchronous log
    * High performance query
    * Flat-file "trivial" serialization
    * Db maintenance tool
