This file is used to document any relevant changes done to libphorward.
Released on: Jan 20, 2021
- Fixed memory bug in
parray_swap()
plist_count()
now returns size_t instead of int- Generate documentation with txt2tags 3.7
plist_subsort()
switched to a bubble-sort algorithm after several fails of improving the previous quicksort-like algorithm- service scripts fixed to run better in distribution mode
Released on: Nov 7, 2019
- parray:
- New data storage behind parray objects
- New functions for set management:
parray_union()
,parray_diff()
,parray_sort()
,parray_concat()
, providing equivalence to their plist counterparts - Changed signatures for parray iter functions
- plist:
- Improvements of the
plist
data type so thatplistel
provides no (error-prone!) back-pointer to its list anymore. - Speed optimization on
plist_diff()
andplist_union()
. - New flag
PLIST_MOD_KEEPKEYS
to keep key order and implement opposite hiding (last key collision will be chained to the end). - New function
plist_getkey()
to iterate over available keys in a hash-table configured plist object. - Flags generally stored as short values rather than int.
- Improvements of the
- pccl:
- Changed underlying data structures to the much faster parray.
- utf8:
putf8_strlen()
improved
- other:
- Switched license terms from 3-clause BSD to MIT
- Entirely restructured
src/
-folder. - Modularization of the command-line tools
pdoc
,pinclude
andpproto
. - Began development of a
ptest
utility to perform automated tests and CI, implemented several tests cases in different modules. - Improved program tracing facilities, including clock measuring to indicate slow running functions.
- Improved documentation and README.md.
- Shell script
standalone.sh
to build stand-alone source versions of libphorward to be copied into other projects. - Moved the
pany
dynamic variant data type away into the phosphor repository.
Released on: Jan 1, 2019
- Improved hash table feature of
plist
to use non-mersenne prime numbers for collision avoidance - Updated layout and cross-linking of the HTML-documentation
- Removed former
parse
module and integrated it into the UniCC² repository - Removed former
vm
module and integrated it into the phosphor repository - Install
pdoc
,pinclude
andpproto
command-line tools to /bin - Removed
premcomment
tool
Released on: Sep 27, 2018
- regex: Implemented push-scanning
- Lexical analyzers are now configured and executing using the lexer context data structure plexctx
- New functions
plexctx_lex()
,plexctx_init()
,plexctx_create()
,plexctx_reset()
andplexctx_free()
.
- regex: Several improvements
plex_dump_dot()
allows to du- Installpdoc
,pinclude
andpproto
command-line tools to /bin
- Removed
premcomment
toolmp plex-scanners in dot-formatted GraphViz format; This can also be triggered with plex command-line tool,--dot
switch.- pregex_ptn function API white-listed for documentation generator
- New function
pregex_ptn_create()
as an object-oriented shortcut forpregex_ptn_parse()
Released on: Apr 17, 2018
- v0.22.4: Memory leaks removed
- v0.22.3: Updated documentation, thanks to AGS
- v0.22.2: inline-symbols incorrectly implemented in pbnf
- v0.22.1: Build-system fixes (Windows only)
- v0.22.1: pgetline() function as POSIX compatiblity layer
- Regular expressions
- Internal revisions and renamings.
- Cleaning data structures from temporal and ephemeral values.
- Removing
pregex_accept
structure - Renamed
begin
tostart
in theprange
structure.
- Trace facilities
- Evalutation of the TRACEFUNCTION environment variable to switch trace output also on function-level, rather than module level.
- New LOG macro to allow for printf-style formatted output.
- Bugfixes
- Improved the plex command-line utility, it now recognizes
-b
and-e
correctly, allows for escape sequences and can read from stdin. - Improved the pregex command-line utility to use the input parameter as is, if the parameter is not the name of a file.
- Removed warnings and unused static functions from the entire library.
- Fixing & refactoring in pccl_parseshorthand() that caused invalid dfa state machines generated from regular expressions on some 32-bit machine configurations.
- plex_tokenize() ran under some circumstances into an endless-loop.
- Improved the plex command-line utility, it now recognizes
- Documentation updated
Released on: Dec 13, 2017
- Documentation updated and refreshed with some syntax-highlighting
- New array functions parray_next(), parray_prev(), parray_iter(), parray_riter() and parray_for()
- New list functions plist_iter(), plist_riter(), plist_iter_access(), plist_riter_access() and plist_concat()
Released on: Nov 7, 2017
- v0.20.2: Removed warnings that came up on Mingw32, issue #1
- v0.20.1: Purged build system
- Changed behavior of command-line tools to be more pynetree compliant.
- Fixing an ancient bug in the DFA construction mechanism building arbitrary state orders.
- New README.md and updated CHANGELOG.md
Released on: Feb 3, 2017
- Redesign of the grammar definition language
- Introduced command-line utilities
pregex
andplex
- Generated documentation added
- Several bugfixes in the build-system
- Cleared build-system from unrequired files
Released on: Sep 9, 2016
- Full refactoring of all modules, evolving in the following new modules:
- base (plist, parray, pccl) for data structures
- string for extended string functions
- util for system-independent utility functions
- pany for a dynamic, object-oriented data type
- pregex for an object-oriented regular expression toolchain
- plex for an object-oriented lexing toolchain
- Started to create a full reference manual and user guide
- New README.md file with examples
- More test programs and tools in DEMO folder
Released on: Jul 2, 2012
- New string functions pstrltrim(), pstrrtrim(), pstrtrim(), pstrndup(), pstrset(), pstrget(). There had also been some renamings on existing functions to follow an integrative naming convention (without underscore in its name).
- Added pregex_ptn-structure (pregex-pattern) and rewrote the entire parsing and modification tools of regular expressions.
- Extended the regular expression facilities to an object-oriented access using the pregex-object. This will give much more flexibility and a better handling for various purposes.
- New regular expression object functions for matching, splitting and replacing.
- The trace facilities are now handled in a different way. To switch them on, use the environment variable TRACEMODULE and configure the buildsystem with the --with-trace option.
- New README documentation generated with txt2tags, with installation of a manpage also.
- Moved entire directory and installation structure to fit the GNU coding standards.
- Removed own build toolchain and moved to GNU autotools as the main development toolchain. There is also a support for scons and Visual C++ integrated currently.
First mentionable initial public release was on Sep 16, 2011 as v0.16.3.