Releases: ShinobuAmasaki/forgex
Forgex v3.5
What's New
- The command line tool
forgex-cli
have been separated into the repository ShinobuAmasaki/forgex-cli.
None of the Forgex APIs have changed.
Fix
- Added error handling for calling the
size
function in debug mode. #3
Forgex v3.4
Fix
From this version, Forgex has been fixed to properly handle anchors (the caret ^
and the dollar $
signs) that are not beginning of a pattern.
It can handle patterns like this:
(^a)
(^a)|(.*a\s*$)
Forgex v3.3
What's New
- Literal search optimization is implemented about prefix and suffix.
- Introduced
--disable-literal-optimize
flag to theforgex-cli find match lazy-dfa
command. - Added test cases to check whether prefixes and suffixes are extracted properly.
Note:
- Literal optimization is not implemented in
forgex-cli find match dense
command. - The optimization with intermediate literals
.*literal.*
is not implemented in this version because it is difficult to extract them.
Forgex v3.2
What's new
- Command line interface tool
forgex-cli
for testing and benchmarking. - Thread-safe operators
.in.
and.match.
indo_concurrent
and OpenMP parallel block. - Automata are now constructed properly from nested closures.
- Abstract Syntax Trees, NFAs, and DFAs now dynamically allocate memory as needed.
Some bug fixes have been made to allow patterns like this to be handled:
a?b+|c*d
(a|b(c|d(e|f)g)h|i)*
((a|b)*)*
The above test cases for these patterns are added to test_case_007
.
Note:
- A program build by
gfortran
on Windows may crash if an allocatable character variable is used in an OpenMP parallel block. - If you are using the command line tools in PowerShell on Windows, the system locale shall be UTF-8.
Forgex v3.1
Bugfix
Fixed a bug where the \s
shorthand character class did not match whitespace characters. Accordingly, test_case_006 was added on test/.
Users of Forgex v3.0 are strongly encouraged to update to this version.
Forgex v3.0
New Features
APIs
This release includes the following features:
pure elemental
API operators are implemented.pure
API procedures are implemented.- The function
regex
has been changed to a subroutine, and if you want to get a string as the return value, useregex_f
. - Inverted character classes do not match control characters.
Documentation
The documentation is available at: https://shinobuamasaki.github.io/forgex
Internal Changes
This includes the following internal implementation changes:
- All source code has been rewritten to eliminate the use of pointers and global variables.
- Procedures for measuring time has been experimentally added to src/benchmark.
Note
These above operators and procedures can also be used within the do concurrent
construction. However, note that mixing with OpenMP programs has not been tested. Array allocation optimization is not yet complete. The documentation is work in progress.
Forgex v2.0
New Feature
This release includes the following feature:
- On-the-Fly DFA construciton is implemented.
About the Internal Implementation
This includes the following internal implementation changes:
- the prefix
forgex_
was added to all internal module names, - the
automaton_m
module was divided into theforgex_lazy_dfa_m
andforgex_nfa_m
modules, - time and memory space consumption was reduced.
No API changes.
Forgex v1.4
This release includes the following feature:
- added a feature to remember the previous pattern and use it for matching.
With the addition of this feature, overhead can be reduced by using existing DFA for queries of the same pattern.
Forgex v1.3
This version includes bug fixes:
- The problem of broken character classes in UTF-8 is fixed.
- Closures now prefer matching strings of one or more characters.
Forgex v1.2
This version includes a bug fix:
- Fixed broken repetition range (when setting min to zero).
This version includes the following changes:
- All tests output more verbosely.
regex
function takes optional argumentlength
,from
andto
.- Zeros in repetition range values and maximum values are not allowed.