Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
224 lines (178 sloc) 9.76 KB
Changes in the successive versions of Mikmatch
Mikmatch is the port of micmatch 0.700 to the "new" Camlp4 (3.10).
Mikmatch is not compatible with Camlp4 <= 3.09 or Camlp5.
Please send bug reports, comments or feature requests to
Martin Jambon <> or to the public forum at
!!! = some incompatibilities
opt = optimizations
+ui = additions in the user interface
-ui = restrictions in the user interface
bug = bug or security fix
doc = major changes in the documentation
pkg = changes in the structure of the package or in the installation procedure
1.0.6: [bug] Fix for camlp4 4.00.0
1.0.5: [pkg] Subpackage "" for toplevel usage
1.0.4: [bug] Fixed bug consisting in Not_found exception being raised
in an alternative capturing an empty string.
(losing compatibility with pcre-ocaml versions from 2004
or earlier)
1.0.3: [!!!] Builds with camlp4 3.12.0 but no longer with 3.11.
Thanks to Jake Donham for the patch.
1.0.2: [bug] Fixed important name scoping bug
(definitions were inserted too early).
[bug] Fixed bug that was causing directives to be ignored.
1.0.1: [!!!] Support for Camlp4 3.11.0, including toplevel support which
wasn't possible with Camlp4 3.10.
Dropped support for Camlp4 3.10 (please use mikmatch 1.0.0
Will restore compatibility with Camlp4 3.10 only in case
of significant new mikmatch features.
[pkg] Added dependency towards tophide. It is not a strict requirement
but improves the toplevel experience.
1.0.0: [*] First release of mikmatch, translation of micmatch 0.700 for
the "new camlp4" 3.10.
[pkg] License: all source code is now distributed under the BSD license.
[pkg] All occurrences of "micmatch" have been replaced by "mikmatch".
[-ui] Temporarily no toplevel support for the syntax features, waiting
for the availability of camlp4 filters for toplevel phrases.
[pkg] Custom toplevels are no longer built and installed.
[+ui] No more polymorphic value restriction. Functions that
use mikmatch patterns can now be polymorphic.
Many identifiers with the "__mikmatch" prefix are now visible
as module structure items.
[-ui] Dropped support for Camlp4's revised syntax.
[-ui] No more -thread option. Only matching patterns that contain @
use a table that is shared among threads. User code is responsible
for using locks if needed.
------------------------- Micmatch (for camlp4 <= 3.09) ------------------
This is the history for micmatch before the port to Camlp4 3.10, renamed
0.700: [bug] It was not possible to use "Not" outside of micmatch_pcre
regexps. This is now fixed.
0.699: [+ui] added CAPTURE and COLLECTOBJ
0.698: [bug] fixed dynamic linking problems on MacOS/NetBSD by removing
version_filter. As a consequence, only recent versions of camlp4
are now supported (starting from 3.08.4, maybe earlier).
[bug] fixed missing dependency on "common" for "pcre" and "str"
targets in main Makefile
0.697: [bug] installation of executables now correctly follows $BINDIR
or $PREFIX/bin
[+ui] new FILTER macro which returns true or false
[+ui] changed grammar entry level of macros
(now "expr1" instead of "top"). Allows for less parentheses.
[pkg] added dependency to the Unix library
[+ui] added filename globbing in the Micmatch library
[+ui] added experimental support for views
0.696: [pkg] removed micmatch_pcre.godiva which is a big source of
0.695: [pkg] minor changes for GODI
[bug] added .PHONY targets in Makefile
0.694: [+ui] int and float predefined regexps are not experimental anymore
[bug] fixed null-character related bugs
(Pcre.quote does not escape them)
[bug] fixed bug with ocaml 3.08.1 (and probably earlier): Not_found
was raised during initialization of the preprocessing library
(deletion of grammar rules which didn't exist)
0.693: [+ui] added support for regexps with arguments (gaps of the
form @some_expr) which are evaluated at runtime.
It uses a cache which stores the most recently used
compiled regexps for different sets of arguments.
[opt] optionally shared data structures are now created only where
necessary (just reduces the code size a little)
0.692: [bug, +ui] added "nan" and "inf" (caseless, optional sign)
to the set of strings recognized by the "float" pattern.
0.691: [+ui] experimental addition of predefined regexps "int" and "float"
0.690: [+ui] added support for global shortcut bindings:
let / ... / = ... ;;
0.689: [+ui]
- added support for shortcuts:
let RE ... = ... in ...
let / ... / = ... in ...
- official support for / ... / as an equivalent of RE ... (patterns)
- general support for:
let try ... = ... in ... with ...
[bug] code with misplaced RE patterns cannot compile anymore
0.688: [+ui] added support for automatic type conversions:
(... as x : int)
(... as x := int_of_string)
(... as x = Zero)
[bug] fixed bug which caused some alternative patterns to be
ignored. Simplest example that caused the bug:
match "c" with (RE "a") | (RE "b") | (RE "c") -> ();;
0.687: [doc] added warning against inaccessible named subgroups or positional
markers such as in ("abc" as local !local)*
[+ui] added option -do for command-line programs (like sh -c or perl -e)
0.686: [bug] fixed bugs related to patterns matching empty substrings
(avoiding infinite loops in such cases;
for instance (SPLIT "") and (SPLIT "") ~full:true both work).
0.685: [bug] Fixed the following bugs:
- was counting special "any" as 0 characters instead of 1
(lookbehind assertions)
- "Not_found" problems with recent versions of Pcre due
to the 2004-04-29 change in Pcre.get_substring
- silent removal of bindings which don't make sense in assertions
(BTW I don't know how to print a precise warning instead)
0.684: [+ui] added support for lookaround assertions (PCRE only):
< lookbehind . lookahead > or < lookahead >
0.683: [+ui] added support for positional markers in regexps (e.g. %pos)
0.682: [bug] added compatibility with OCaml 3.09+dev14
0.681: [bug] fixed bug in REPLACE_FIRST
0.680: [bug] replaced the regexp-pp package with the newest version
for compatibility with OCaml 3.09+dev6
0.679: [+ui] added ~share option to MATCH and SEARCH_FIRST
[doc] updated and commented example/
0.678: [+ui] added experimental / ... / syntax in patterns
0.677: [pkg] fixed bugs in META files
[+ui] added "save" and "save_lines" functions to the library
[bug] now bos, eos, bol and eol assertions work (micmatch_pcre)
0.676: [pkg] added version ID in the name of the archives
- fixed bug which prevented the use of the Camlp4
syntax extension for stream parsers (was due to a wrong LEVEL)
- fixed fatal bug in micmatch_str which was accidentally
introduced in the last version (was due to an inexisting LEVEL)
[+ui] added a short Micmatch.Fixed module for handling text
with fixed-width columns.
0.675: [bug] several bugfixes in the installation procedure
(correct clean, any name for gmake OK, camlmix not required)
[pkg] separate installation of micmatch_pcre (default)
and micmatch_str (now optional)
0.674: [+ui]
- added full support for PCRE-OCaml, with
many additional macros and specifications
- POSIX characters classes are now predefined
for both micmatch_str and micmatch_pcre
- micmatch and micmatch_str are now binary executables
so that micmatch scripts can be made self-executable
on Unix-like systems
[doc] updated the reference manual and the web page
[-ui] deprecated use of {123-}. Use {123+} instead.
0.673: [bug] added support for OCaml 3.08.1 (replaced regexp-pp package)
0.672: [+ui,bug]
- added checks for unbalanced or redundant local bindings
- added support for local backreferences
0.671: [+ui]
- added support for backreferences (!ident)
- tries alternatives from left to right, and is greedy by
default for optional matches (? operator). Not official,
since these properties are not specified in the Str library.
- function keyword replaced by fun in the revised syntax
(still not tested though)
0.670: [+ui] addition of the ~ operator for ignoring case (uses the OCaml
definition of case, i.e. the latin1 charset).
[doc] created the reference manual
0.669: [opt] tail-recursivity is now preserved (options -direct/-tailrec)
[-ui] regexpr{-12} is not valid anymore because it looks strange
and ambiguous. regexpr{0-12} should be used instead.
regexpr{12-} is still valid.
0.668: [bug]
- fixed abusive simplification (missing try ... with)
- added missing binding in multithreaded mode
- fixed the buggy Makefile on the web page
0.667: [opt] alternatives between charsets handled like unions of charsets
0.666: [*] initial public release (2004-08-02)
Something went wrong with that request. Please try again.