blob: f1a282f4bfdbea568d462fa14396a40fd677d944 [file] [log] [blame]
Apache CouchDB CHANGES
Version 1.0.0
* Added authentication caching, to avoid repeated opening and closing of the
users database for each request requiring authentication.
Storage System:
* Small optimization for reordering result lists.
* More efficient header commits.
* Use O_APPEND to save lseeks.
* Faster implementation of pread_iolist(). Further improves performance on
concurrent reads.
View Server:
* Faster default view collation.
* Added option to include update_seq in view responses.
Version 0.11.1
HTTP Interface:
* Mask passwords in active tasks and logging.
* Update mochijson2 to allow output of BigNums not in float form.
* Added support for X-HTTP-METHOD-OVERRIDE.
* Better error message for database names.
* Disable jsonp by default.
* Accept gzip encoded standalone attachments.
* Made max_concurrent_connections configurable.
* Made changes API more robust.
* Send newly generated document rev to callers of an update function.
* Use "expando links" for over-long document values in Futon.
* Added continuous replication option.
* Added option to replicating test results anonymously to a community
CouchDB instance.
* Allow creation and deletion of config entries.
* Fixed display issues with doc ids that have escaped characters.
* Fixed various UI issues.
Build and System Integration:
* Output of `couchdb --help` has been improved.
* Fixed compatibility with the Erlang R14 series.
* Fixed warnings on Linux builds.
* Fixed build error when aclocal needs to be called during the build.
* Require ICU 4.3.1.
* Fixed compatibility with Solaris.
* Added authentication redirect URL to log in clients.
* Fixed query parameter encoding issue in oauth.js.
* Made authentication timeout configurable.
* Temporary views are now admin-only resources.
Storage System:
* Don't require a revpos for attachment stubs.
* Added checking to ensure when a revpos is sent with an attachment stub,
it's correct.
* Make file deletions async to avoid pauses during compaction and db
* Fixed for wrong offset when writing headers and converting them to blocks,
only triggered when header is larger than 4k.
* Preserve _revs_limit and instance_start_time after compaction.
Configuration System:
* Fixed timeout with large .ini files.
JavaScript Clients:
* Added tests for couch.js and jquery.couch.js
* Added changes handler to jquery.couch.js.
* Added cache busting to jquery.couch.js if the user agent is msie.
* Added support for multi-document-fetch (via _all_docs) to jquery.couch.js.
* Added attachment versioning to jquery.couch.js.
* Added option to control ensure_full_commit to jquery.couch.js.
* Added list functionality to jquery.couch.js.
* Fixed issues where bulkSave() wasn't sending a POST body.
View Server:
* Provide a UUID to update functions (and all other functions) that they can
use to create new docs.
* Upgrade CommonJS modules support to 1.1.1.
* Fixed erlang filter funs and normalize filter fun API.
* Fixed hang in view shutdown.
Log System:
* Log HEAD requests as HEAD, not GET.
* Keep massive JSON blobs out of the error log.
* Fixed a timeout issue.
Replication System:
* Refactored various internal APIs related to attachment streaming.
* Fixed hanging replication.
* Fixed keepalive issue.
URL Rewriter & Vhosts:
* Allow more complex keys in rewriter.
* Allow global rewrites so system defaults are available in vhosts.
* Allow isolation of databases with vhosts.
* Fix issue with passing variables to query parameters.
Test Suite:
* Made the test suite overall more reliable.
Version 0.11.0
* Fixed CVE-2010-0009: Apache CouchDB Timing Attack Vulnerability.
* Added default cookie-authentication and users database.
* Added Futon user interface for user signup and login.
* Added per-database reader access control lists.
* Added per-database security object for configuration data in validation
* Added proxy authentication handler
HTTP Interface:
* Provide Content-MD5 header support for attachments.
* Added URL Rewriter handler.
* Added virtual host handling.
View Server:
* Added optional 'raw' binary collation for faster view builds where Unicode
collation is not important.
* Improved view index build time by reducing ICU collation callouts.
* Improved view information objects.
* Bug fix for partial updates during view builds.
* Move query server to a design-doc based protocol.
* Use json2.js for JSON serialization for compatiblity with native JSON.
* Major refactoring of couchjs to lay the groundwork for disabling cURL
support. The new HTTP interaction acts like a synchronous XHR. Example usage
of the new system is in the JavaScript CLI test runner.
* Added option to implicitly create replication target databases.
* Avoid leaking file descriptors on automatic replication restarts.
* Added option to replicate a list of documents by id.
* Allow continuous replication to be cancelled.
Storage System:
* Adds batching of multiple updating requests, to improve throughput with many
writers. Removed the now redundant couch_batch_save module.
* Adds configurable compression of attachments.
Runtime Statistics:
* Statistics are now calculated for a moving window instead of non-overlapping
* Fixed a problem with statistics timers and system sleep.
* Moved statistic names to a term file in the priv directory.
* Added a button for view compaction.
* JSON strings are now displayed as-is in the document view, without the escaping of
new-lines and quotes. That dramatically improves readability of multi-line
* Same goes for editing of JSON string values. When a change to a field value is
submitted, and the value is not valid JSON it is assumed to be a string. This
improves editing of multi-line strings a lot.
* Hitting tab in textareas no longer moves focus to the next form field, but simply
inserts a tab character at the current caret position.
* Fixed some font declarations.
Build and System Integration:
* Updated and improved source documentation.
* Fixed distribution preparation for building on Mac OS X.
* Added support for building a Windows installer as part of 'make dist'.
* Bug fix for building's module list.
* ETap tests are now run during make distcheck. This included a number of
updates to the build system to properly support VPATH builds.
* Gavin McDonald setup a build-bot instance. More info can be found at
Version 0.10.1
* Stability enhancements regarding redirects, timeouts, OAuth.
Query Server:
* Avoid process leaks
* Allow list and view to span languages
* Eliminate new process flood on system wake
Build and System Integration:
* Test suite now works with the distcheck target.
Version 0.10.0
Storage Format:
* Add move headers with checksums to the end of database files for extra robust
storage and faster storage.
View Server:
* Added native Erlang views for high-performance applications.
HTTP Interface:
* Added optional cookie-based authentication handler.
* Added optional two-legged OAuth authentication handler.
Build and System Integration:
* Changed `couchdb` script configuration options.
* Added default.d and local.d configuration directories to load sequence.
Version 0.9.2
* Fix replication with 0.10 servers initiated by an 0.9 server (COUCHDB-559).
Build and System Integration:
* Remove branch callbacks to allow building couchjs against newer versions of
Version 0.9.1
Build and System Integration:
* PID file directory is now created by the SysV/BSD daemon scripts.
* Fixed the environment variables shown by the configure script.
* Fixed the build instructions shown by the configure script.
* Updated ownership and permission advice in `README` for better security.
Configuration and stats system:
* Corrected missing configuration file error message.
* Fixed incorrect recording of request time.
Database Core:
* Document validation for underscore prefixed variables.
* Made attachment storage less sparse.
* Fixed problems when a database with delayed commits pending is considered
idle, and subject to losing changes when shutdown. (COUCHDB-334)
External Handlers:
* Fix POST requests.
* Redirect when loading a deleted view URI from the cookie.
HTTP Interface:
* Attachment requests respect the "rev" query-string parameter.
JavaScript View Server:
* Useful JavaScript Error messages.
* Added support for Unicode characters transmitted as UTF-16 surrogate pairs.
* URL-encode attachment names when necessary.
* Pull specific revisions of an attachment, instead of just the latest one.
* Work around a rare chunk-merging problem in ibrowse.
* Work with documents containing Unicode characters outside the Basic
Multilingual Plane.
Version 0.9.0
Futon Utility Client:
* Added pagination to the database listing page.
* Implemented attachment uploading from the document page.
* Added page that shows the current configuration, and allows modification of
option values.
* Added a JSON "source view" for document display.
* JSON data in view rows is now syntax highlighted.
* Removed the use of an iframe for better integration with browser history and
* Full database listing in the sidebar has been replaced by a short list of
recent databases.
* The view editor now allows selection of the view language if there is more
than one configured.
* Added links to go to the raw view or document URI.
* Added status page to display currently running tasks in CouchDB.
* JavaScript test suite split into multiple files.
* Pagination for reduce views.
Design Document Resource Paths:
* Added httpd_design_handlers config section.
* Moved _view to httpd_design_handlers.
* Added ability to render documents as non-JSON content-types with _show and
_list functions, which are also httpd_design_handlers.
HTTP Interface:
* Added client side UUIDs for idempotent document creation
* HTTP COPY for documents
* Streaming of chunked attachment PUTs to disk
* Remove negative count feature
* Add include_docs option for view queries
* Add multi-key view post for views
* Query parameter validation
* Use stale=ok to request potentially cached view index
* External query handler module for full-text or other indexers.
* Etags for attachments, views, shows and lists
* Show and list functions for rendering documents and views as developer
controlled content-types.
* Attachment names may use slashes to allow uploading of nested directories
(useful for static web hosting).
* Option for a view to run over design documents.
* Added newline to JSON responses. Closes bike-shed.
* Using ibrowse.
* Checkpoint replications so failures are less expensive.
* Automatically retry of failed replications.
* Stream attachments in pull-replication.
Database Core:
* Faster B-tree implementation.
* Changed internal JSON term format.
* Improvements to Erlang VM interactions under heavy load.
* User context and administrator role.
* Update validations with design document validation functions.
* Document purge functionality.
* Ref-counting for database file handles.
Build and System Integration:
* The `couchdb` script now supports system chainable configuration files.
* The Mac OS X daemon script now redirects STDOUT and STDERR like SysV/BSD.
* The build and system integration have been improved for portability.
* Added COUCHDB_OPTIONS to etc/default/couchdb file.
* Remove COUCHDB_INI_FILE and COUCHDB_PID_FILE from etc/default/couchdb file.
* Updated `` to manually link `libm` for portability.
* Updated `` to extended default library paths.
* Removed inets configuration files.
* Added command line test runner.
* Created dev target for make.
Configuration and stats system:
* Separate default and local configuration files.
* HTTP interface for configuration changes.
* Statistics framework with HTTP query API.
Version 0.8.1-incubating
Database Core:
* Fix for replication problems where the write queues can get backed up if the
writes aren't happening fast enough to keep up with the reads. For a large
replication, this can exhaust memory and crash, or slow down the machine
dramatically. The fix keeps only one document in the write queue at a time.
* Fix for databases sometimes incorrectly reporting that they contain 0
documents after compaction.
* CouchDB now uses ibrowse instead of inets for its internal HTTP client
implementation. This means better replication stability.
HTTP Interface:
* Fix for chunked responses where chunks were always being split into multiple
TCP packets, which caused problems with the test suite under Safari, and in
some other cases.
* Fix for an invalid JSON response body being returned for some kinds of
views. (COUCHDB-84)
* Fix for connections not getting closed after rejecting a chunked request.
* CouchDB can now be bound to IPv6 addresses.
* The HTTP `Server` header now contains the versions of CouchDB and Erlang.
JavaScript View Server:
* Sealing of documents has been disabled due to an incompatibility with
SpiderMonkey 1.9.
* Improve error handling for undefined values emitted by map functions.
Build and System Integration:
* The `couchdb` script no longer uses `awk` for configuration checks as this
was causing portability problems.
* Updated `sudo` example in `README` to use the `-i` option, this fixes
problems when invoking from a directory the `couchdb` user cannot access.
* The view selector dropdown should now work in Opera and Internet Explorer
even when it includes optgroups for design documents. (COUCHDB-81)
Version 0.8.0-incubating
Database Core:
* The view engine has been completely decoupled from the storage engine. Index
data is now stored in separate files, and the format of the main database
file has changed.
* Databases can now be compacted to reclaim space used for deleted documents
and old document revisions.
* Support for incremental map/reduce views has been added.
* To support map/reduce, the structure of design documents has changed. View
values are now JSON objects containing at least a `map` member, and
optionally a `reduce` member.
* View servers are now identified by name (for example `javascript`) instead of
by media type.
* Automatically generated document IDs are now based on proper UUID generation
using the crypto module.
* The field `content-type` in the JSON representation of attachments has been
renamed to `content_type` (underscore).
HTTP Interface:
* CouchDB now uses MochiWeb instead of inets for the HTTP server
implementation. Among other things, this means that the extra configuration
files needed for inets (such as `couch_httpd.conf`) are no longer used.
* The HTTP interface now completely supports the `HEAD` method. (COUCHDB-3)
* Improved compliance of `Etag` handling with the HTTP specification.
* Etags are no longer included in responses to document `GET` requests that
include query string parameters causing the JSON response to change without
the revision or the URI having changed.
* The bulk document update API has changed slightly on both the request and the
response side. In addition, bulk updates are now atomic.
* CouchDB now uses `TCP_NODELAY` to fix performance problems with persistent
connections on some platforms due to nagling.
* Including a `?descending=false` query string parameter in requests to views
no longer raises an error.
* Requests to unknown top-level reserved URLs (anything with a leading
underscore) now return a `unknown_private_path` error instead of the
confusing `illegal_database_name`.
* The Temporary view handling now expects a JSON request body, where the JSON
is an object with at least a `map` member, and optional `reduce` and
`language` members.
* Temporary views no longer determine the view server based on the Content-Type
header of the `POST` request, but rather by looking for a `language` member
in the JSON body of the request.
* The status code of responses to `DELETE` requests is now 200 to reflect that
that the deletion is performed synchronously.
JavaScript View Server:
* SpiderMonkey is no longer included with CouchDB, but rather treated as a
normal external dependency. A simple C program (`_couchjs`) is provided that
links against an existing SpiderMonkey installation and uses the interpreter
embedding API.
* View functions using the default JavaScript view server can now do logging
using the global `log(message)` function. Log messages are directed into the
CouchDB log at `INFO` level. (COUCHDB-59)
* The global `map(key, value)` function made available to view code has been
renamed to `emit(key, value)`.
* Fixed handling of exceptions raised by view functions.
Build and System Integration:
* CouchDB can automatically respawn following a server crash.
* Database server no longer refuses to start with a stale PID file.
* System logrotate configuration provided.
* Improved handling of ICU shared libraries.
* The `couchdb` script now automatically enables SMP support in Erlang.
* The `couchdb` and `couchjs` scripts have been improved for portability.
* The build and system integration have been improved for portability.
* When adding a field to a document, Futon now just adds a field with an
autogenerated name instead of prompting for the name with a dialog. The name
is automatically put into edit mode so that it can be changed immediately.
* Fields are now sorted alphabetically by name when a document is displayed.
* Futon can be used to create and update permanent views.
* The maximum number of rows to display per page on the database page can now
be adjusted.
* Futon now uses the XMLHTTPRequest API asynchronously to communicate with the
CouchDB HTTP server, so that most operations no longer block the browser.
* View results sorting can now be switched between ascending and descending by
clicking on the `Key` column header.
* Fixed a bug where documents that contained a `@` character could not be
viewed. (COUCHDB-12)
* The database page now provides a `Compact` button to trigger database
compaction. (COUCHDB-38)
* Fixed portential double encoding of document IDs and other URI segments in
many instances. (COUCHDB-39)
* Improved display of attachments.
* The JavaScript Shell has been removed due to unresolved licensing issues.