Fetching contributors…
Cannot retrieve contributors at this time
700 lines (480 sloc) 21 KB
2012.10.08, Version 1.0.7 (stable), v3523
New features:
* Database:
- New Dropbox database backend (experimental)
- Opa-based mongo driver, stdlib.apis.mongo avialable for node.js backend
removed stdlib.apis.mongo.node and stdlib.apis.mongo.common
* Xhtml boolean attributes ("checked", "selected"...) now accept boolean values:
<input type="checkbox" checked={true}> produces <input type="checkbox" checked="checked">
<input type="checkbox" checked={false}> produces <input type="checkbox">
Updated APIs:
* File:
- depreacted `content` and `content_opt`, replaced by `read` and `read_opt`
- added `write` and `mkdir` function
* System;
- added which function
* Int:
- added succ and pred function
* File:
- added fold_dir_rec function
* ServerArg:
- filter function only filters on real arguments, not exectuable name anymore
* Rule:
- added Rule.pipe
* Crypto:
- Refactoring of crypto functions:
- Now the crypto functions takes and returns binaries datas instead of (invalid) string
- Added Crypto.HMAC.{md5, sha1, sha256, ripemd160}, Crypto.Hash.{sha256, ripemd160}
- Removed Crypto.Hash.{hmac_*, sha2}
- Removed deprecated function expoted to the global namespace.
* Binary:
- Added standard binary <-> string conversion,
- Binary.of_{hex, base64, raw} (string -> binary)
- Binary.to_{hex, base64, raw} (binary -> string)
- Added String.byte_length
* Runtime:
- Scheduler: schedule sometimes to the node scheduler, for more server availability
* Compiler:
- incomplete pattern matching are now errors and not only warnings
- Added option -j for parallel compilation
- JsImp: Share duplicated javascript code
- JsImp: Remove inlined declarations
- JsImp: Clean declarations which are private and unused
- JsServer: Better 'require' graph (avoid useless require to speedup initialisation)
* Other:
- changed the package names for debian, self-extractible and mac
- Added is_module and opacapi info in the doc API JSON file (generated with --api)
- removed the warning about system lang not found (en by default)
Bug fixes:
* Plugins:
- In some cases with bypasses wich returns void the bypass could be not called
* Stdlib:
- Server: Decode urls for bundled ressources
- JsAst: Rename also ident define as a JS key (more compact Js client)
- Values which has been serialized by server on the client toplevel could be misnamed
- Mongo and utf8 multibyte characters
Credit:Bug reported by Alok Menghrajani (
* Compiler:
- The aysnchronous toplevel declaration was broken,
Credit:Bug reported by Philip Müller (
* Runtime:
- Fix spawn
- Fix Int_of_string
Credit:Pull request of Arthur Azevedo de Amorim (
* Other:
- Some fixes for exotic compiler options (no-cps, no-server, ...)
2012.09.10, Version 1.0.6 (stable), v3375
New features:
* Tools:
- opa bundle: added a new CLI to `opa` to bundle the JS, depends and stdlib of an app
for an easy deployment on a clean server.
`opa bundle TARGET` will create a self contained TARGET.opa-bundle and tar-gzip it.
- opa create has a new mvc-small template, the two others has been also updated
* Stdlib:
- file watcher, readdir
- stdlib.system: explicit asynchronous shell commands
- Added Iter.cache
* Plugins:
- New syntax to plugins registering
* Compiler:
- Optimized pattern matching of the server code (propagates type annotation)
- Optimized JavaScript cps runtime
- Simplification of toplevel wait of cps values
- Reduction of the size of the runtime JavaScript client AST
- Increased sharing of runtime gamma
- Avoid useless cps eta expansion
- Improved JavaScript inlining
- Avoid useless require to speedup the launch time
- Improved cleaning of JavaScript client code
- Allow a value with forall type can be coerced to a specialized type
* Other:
- addition of `extend` keyword to extend records with new fields
- improved the launch script on Mac: download and open node installer if necessary
- opa-create is not compiled during installation anymore
- various improvements for opa create
- we do not check node max version anymore
- use installed mongod if exists in PATH
Updated APIs:
* Bootstrap:
- upgraded to Bootstrap 2.1.0
- removed support of bootstrap 2.0.2 and 2.0.3
- removed support for import stdlib.themes.bootstrap.v1.X.X, but added v2.0.4
* Crypto:
- change interface of Crypto.Base64.encode* to binary -> string
- change interface of Crypto.Base64.decode* to string -> binary
Bug fixes:
* Compiler:
- Reset plugins loader between several compilation unit
- Separates client and server side projection of bypasses
* Stdlib:
- Database: Dbset iterator are now cached.
- SmtpClient: fixed mail send when using default_options only
- OpaSerialize: Opa record deserialization from smaller json record
- Server: Don't decode urls
- Crypto.Base64
* Other:
- Fix import plugin extraction script on FreeBSD (thanks Jeremy Messenger <>)
- opa-create now takes the remaining arguments given to `opa create`
- Dom: Xhtml attributes and namespaces
- 32bits compilation
- Mac Package signed for Gatekeeper
2012.07.30, Version 1.0.5 (stable), v2988
New features:
* Stdlib :
- Added Binary module
- Added Pack module
* Compiler :
- Improved type error messages (by adding type witnesses)
- Improved syntax error messages
- Character } is treated as reserved in html environment (avoid an ambiguity of the syntax)
- Reduce the javascript size by reduces size of some generated idents
- Added the new 'pure' bsltag, allows some JS optimizations
- Do not copy standard Opa JS plugins and packages when building object
- Output a package.json descriptor for packages and plugins
- Add flag --package-version to specify version in package.json
- Opa now accepts .js and .nodejs files when compiling packages and
executables. Files should be in plugin format and used with standard
plugin syntax
* Node.js runtime:
- Launch script improved, with node version check and node module dependencies check
- Launch helper is now in tools/dependencies
- Speedup of the runtime (fibo : 3.75, hello siege: 1.70)
- Improve the function of logger and clean the server outputs
- Closure serialization (empty closure and published closure)
- Binaries manipulation
* Other:
- Better compliance with Lintian
- Reorganization of the project source code in order to be clearer and comply to license change (ocamllib and compiler: AGPL, lib and tools: MIT)
- opa-plugin-builder and opa-plugin-brower now have their manpages
- add plugins to opacapi checker
- less files installed
Bug fixes:
* File manipulation on node backend
* install PATH fixed
* Added explicit dependency to simplesmtp (was expecting to be in nodemailer)
* serve "application/xhtml+xml" to webkit browser (fix especially svg)
* Opa applications stop if no server
* Server runtime options
* Opa timer delay the first call to the callback
* Javascript inlining
* Safari hangs when mixing asynchronous and synchronous request
* Wrong renaming of variables in JS catch statements
* Obj. dependency directory placed in same path as main file
* Manual examples are now separate repositories:
* Git submodules used for manual examples
* Chapter 7 "Hello, database" translated in Chinese. Thanks to Li Wenbo <>
* Process management functions (e.g. fork) that were not implemented in the
NodeJS backend were removed
2012.07.03, Version 1.0.4 (stable), v2403
Bug fixes:
- is not installed in /usr by debian package anymore
- Reduced the generated JS code size
- Split final JS object in several parts
- Load standard library packages dynamically
- Detection of node and node_modules dependencies at launch
2012.06.26, Version 1.0.3 (stable), v2309
Dropped OCaml back-end from the release package
- Reduced the package size from more than 66%
Removed node and node_modules inclusion from the release package
- You have to install node and npm yourself
- You will need to install node modules: mongodb, formidable, nodemailer, imap
2012.06.25, Version 1.0.2 (stable), v2276
Bug fixes:
- Debian package installer when OCaml was already present
- iconv, formbuilder and xls for node.js backend
2012.06.21, Version 1.0.1 (stable), v2258
New features:
- opa create myapp now available for node.js backend
- SSL for node.js backend
Bug fixes:
- MongoDB fields decoding
2012.06.20, Version 1.0.0 (stable), v2242
New features:
- Node.js backend by default
Updated APIs:
* Bootstrap
- upgraded to Bootstrap 2.0.4
- import stdlib.themes.bootstrap does not import responsive CSS anymore
- see Boostrap module description for more info
2012.06.12, Version 0.9.4 (stable), v1900
New features:
* Tools
- 'opa create myapp' to generate a full Opa project
* Stdlib
- Map.filter
- Uri.of_relative and Uri.default_relative
- Support of Gravatar API
* switch to --db-local option and ~/.opa/mongo directory by default
* Use of curl on Mac OS to download mongoDB archive
* Option to include the version on @deprecated directive
* Auto conversion from iterator to xml
* Formbuilder markup compatible with Bootstrap
Bug fixes:
* Compilation of libiconv on FeeBSD, thanks Jeremy Messenger!
* mongoDB archive URL for Mac OS
* Bootstrap white glyphicons
* IMAP Client for Gmail
2012.05.31, Version 0.9.3 (stable), v1869
New supported platform:
* FreeBSD
- Opa commited to FreeBSD port trees:
Thanks to Jeremy Messenger <>
New features:
* Doc
- 5 first chapters translated in Chinese.
Thanks to Li Wenbo <> for this major contribution!
Online preview:
* Syntax
- Possibility to use underscore inside numbers
- In js-like syntax, block braces of inserts can be used as delimiting a anonymous block function.
e.g. <div onready={ {function(_) code} }></>
and <div onready={ function(_){ code} }></>
can be written <div onready={ function(_) code }></>
- Projection database syntax
- Allows several match case with the same production
* IMAP Client
* SMTP Client
- plain authentication
* HTTP Server
- PUT and DELETE methods are now handled
* Iconv
- binded libiconv with the help of iconv-ocaml
- added an Iconv module consequently
* The directive @atomic(expr) now checks that the compiler is able to emit an atomic expression computation
(i.e. containing no scheduling point)
* New package stdlib.core.concurrency that provides (on server side only):
- generic Mutex mecanism
- exclusive section
- and reference with exclusive access
* Database
- Mongo is the default database backend
- Sub-path on database set and map
- Projection
- Options for update (ifexists)
- Remove and Remove all operators on database list
- Slice Projection
- Added hole expression and indexed expression on sub-path
- Exists query
* Easier to define several server register: it now accepts a single registrable or a list of registrable
* Better support of html5 void elements: for those elements, the close tag is now optional
Note: html5 void elements can't be closed with a frag tag (</>).
* Easier to change the doctype. For example, to use html5 doctype:
Server.start(Server.http, [{register: { doctype : { html5 }}}, {title:"html5", ~page} ])
* utf-8 charset meta tag automatically added for doctype html5
* namespace on html tag only for doctype xhtml1_1
* Scheduling policy updated to improve concurrency level
* possibility to disable manpages generation with NO_MANPAGES
* do not generate dyn_css link or script tag if useless
* The 'with' construction generate more efficient code (less scheduling points)
* Better check of wrong cyclic type definition
* Faster parsing of Mime Multipart message
* Added a max pang attemps
* Html escaping, faster (x2) and introduces almost no html entities for utf8 encoded html resources
Bug fixes:
* Memory leaks of buffer pools (http and mongodb)
* File descriptor leaks in case of error while answering http request
* Url decoding on multibyte utf8 characters
* UriParser
- fixed bug when parsing ' ' character in path
- accept key without value (including equal sign)
* Mime
- fixed a bug in Mime headers parsing
- various fixes
* Mongodb buffer sharing is now always safe
* Database
- Reference and value on mongo path
- Update of sum path
- Encode special mongo character on mongo fields
- Db.remove on path embedded in mongo database set and map
* Server
- Case insensitive http header parser
* Syntax
- Added 'default' case on Opa trx parser
- Generation of client skeleton in some polymorphic case
- Serialized funaction as server cell
* Session
- The error callback was not called in some use of Session.try_send
Updated APIs:
* Server
- {register:...} now accepts a list of registrable instead of a list of string
Use Server.register_from_extension to register a list of string.
* Resource
- allow custom response headers (name, value)
* SMTP Client
- return the raw message sent on success (Ok)
* Cache
- removed deprecated Negociator API (misspelled)
- added reset function to reset cache entirely
* Mime
- Mime.get_text and Mime.get_attachments now takes an additional decoding function
- Mime.Header.decode_value also takes a decoding function
* Bootstrap
- upgraded to Bootstrap 2.0.3
- ability to import Bootstrap CSS with or without responsiveness
- merged WBootstrap Badge and Label importance type
* Queue
- stdlib.queue moved to stdlib.core.queue
- add many folding function
* Set
- add 'mapping' functions that can map to different kind of set
* List
- add 'rev_iter'
* Random add 'bool'
* Parser
- Parser.alphanum, Parser.ident and Parser.bool added
* Scheduler
- New functions for advance users, providing fine-tuning of scheduling policy:
set_max_compute_successive, new set_nb_step_apply, point, yield, switch.
* ThreadContext
- add Client.using
* OpaValue
- Generator of default value (OpaValue.default)
* Json
- Added sort function
2012.04.06, Version 0.9.2 (stable), v1591
New supported platform:
* Windows 64bits
- the platform is now supported via our binary installer while still considered as unstable
Congratulations to shadinger ( for the major contribution!
Bug fixes:
* Windows
- line error location
* Mime
- fixed a bug in q-parser and qp-parser
- fixed inline plain/text detection
* UriParser
- fixed bug when parsing '+' character in query
- accept empty values for query parameters
* Json
- serialisation: emit an error when an integers serialisation could be out of range for the client
* Mongo
- ref and val path on database set
- sum type updating
- composed path
- always resize buffer when it's full
- detection of primary key query
- update with _id
- use 64bits package for autoinstall
* Separate compilation
- Fix packages ordering issues with compiler packages
Updated APIs:
* `+` : can be used to concatenate two strings
* Bootstrap CSS
- upgraded to v2.0.2
- fixes for Bootstrap and Opa icons inclusion
- changed the import names
- added Font Awesome icons
* Bootstrap Widgets
- upgrade bootstrap widgets to match v2.0 of bootstrap
- the previous implementation (compatible with <= v1.4.0) is moved in stdlib.widgets.deprecated.bootrap
* Mongo low-level drivers
- added authentication parameters and command line options
* HttpRequest
- added a get_form_data to retieves POST data (application/x-www-form-urlencoded )
* Date
- support %z in scanner format (returns GMT date)
Other features:
* Windows
- the installer is now completly standalone, nothing else need to be installed
* Html response, size reduction
- add option --xhtml-enable-inlined-event, that can choose to inline event handler code in the html
- automatic dom ids are shorter
* Dom ids: accept minus char inside ids
* Slicer
- new warning classes that prevent using inadapted slicer directives
- new compile-time option '--slicer-check' that activate predefined configuration for theses warning classes
* Mongo
- added authentication options for @mongo database
- added reference path on database set/map
- use the default command line options if non-specific command line
- use cursors
- 'tilda' syntactic sugar for update request
* Db3
- added reference path on the root
* bslClient
- better handling of DOM appendChild under an HTML5 element in IE (fallback to jQuery)
* Editor
- start support of Sublime Text 2 with a plugin available at
2012.03.09, Version 0.9.1 (stable), v1466
Other features:
* opa-translate tool updated for classic to js-like syntax translation
with support of syntactic sugar, prettier printer and various enhancements and bugfixes
* directive @from
- new @from directive to resolve importation conflicts
- In case of conflicts beetween two types with same original names, error message includes packages.
* cyclic types
- exportation of cyclic types
- typer.cyclic warnings when (non local) cyclic type exportation
* mixing database backends
- Added @db3 and @mongo database options on database schema declaration.
* new exprimental --remote-logs option to send logs to a remote web server
* new --cookie-accept-client-values to use cookie ec/ic values provided by the client instead of generating new ones
New APIs:
* Unification of runtime types (and fix 'magic' functions)
Updated APIs:
* included Twitter's Bootstrap CSS inside the stdlib, and improved the import system (see doc)
* added a way to register favicons (like css and js)
* changed WebClient API concerning additional headers
* improved / fixed MIME library
Bug fixes:
* Improved HTTP gzip compression time
* Various fixes on http client response parser
* Parser fixes : bindinds, declaration directives, sugared list
* Checking of recursives values
* Database queries on primary keys
* Events handler in new syntax
* Coercion on Xhmtl fragment
* File descriptors leak when embedding static files
Other changes:
* Log.* functions take a strings instead of 'alpha
* Http client doesn't log by default (use the new HTTP_CLIENT_DEBUG debug variable if needed)
* --db-local options with mongo databases: download, install and launch a mongo database if needed.
2012.02.14, Version 0.9.0 (stable), v1300
Major features:
* js-like syntax
- new parser for a syntax close to JavaScript
- this is now the default syntax (use --parser classic to the the previous syntax)
- emacs mode and vim mode have been updated for this syntax
* MongoDB support
- new db backend based on MongoDB (not default)
- fully integrated with the langage db syntactic construction
- replica sets are supported using SlaveOk mode
- db syntactic construction extension to support queries with multiple ranges
Other features:
* i18n
- new @i18n directive
- it supports generic value that depends on the language
- more concise and simpler support for string
* directive @public_env
- instructs the compiler that it is legal to serialize a closure
- helps constructing functions on the server side that will be used later on the client side
New APIs:
* Mime, WBootstrap, Bootstrap, Dropbox, GCharts, Markdown, IRC, XlsExport, CsvExport, ...
Updated APIs :
* Email, SmtpClient, SmtpServer, Dom, Resource, OAuth, Canvas, Facebook, Twitter, GitHub, ...
Bug fixes:
* json string escaping: escape all control characters
* many other minor and major bug fixes
* Mongo replica sets now detect unsolicited change in primary due to new
priority feature for replica set nodes
* System.get_memory_usage(() on FreeBSD
Other changes:
* versioning number to semantic versioning (
- 1.0s4 => v0.9.0
* no automatic include of the favicon link
* .mlstate renamed into .opa, and no un-necessary creation at runtime
* HTML5 doctype added
opa (1.0s3.4) unstable; urgency=low
* initial open-source release
-- Louis Gesbert <> Fri, 10 Jun 2011 15:44:20 +0200