General Didelphis components for language modeling and analysis
- Added an actual readme file describing the modules and major packages of the project
- Added missing
@Nullable
annotations on implementations of interfaces that do use them - Introdued
SemidefinedSegment
to help identify unknown diacritics in input data; a feature mapping can output these if the main symbol is known (and thus well-defined in the model) but a modifier is not
- Moved some constants for feature model loading into a single class
- Refactored some constructors for
structures
to use more general types - Fixed several inefficiencies in feature array classes, segment, and sequence classes.
- Implemented lazy hash-code retrieval for some phonetics classes
- Improved compatibility between
Regex
and Java'sPattern
classes - Improved bracket matching algorithm used by
Splitter
- Changed
.getFirstElement()
etc. fromTriple
and replaced them with.first()
etc.
- none
RectangularTable
no longer implementsDelegate
and no longer uses a constructor which exposes the object's internals- Updated documentation to remove
@date
tags andcreated by
lines
- Fixed misuse of Lombok annotation
@FieldDefaults
which do not apply to static class members; the code was written at a time when it incorrectly did affect static members [68] - Logger was failing to output line breaks
- Changed inner
Cursor
class ofStandardStateMachine
to be static; it was written to access a field of it's containing class, but this can be passed as a constructor argument.
Substantial changes to several APIs. Greatly improved test coverage. Extensive additions to the flexibility of state machine code.
- Support for capture groups in automata; this required supporting changes across much of the automata code [42]
- A simple logger API similar to
Log4j
but which is more easily adapted to work with the UI project and the now-abandoned attempts at transpiling to Javascript [31] - A standard regex engine whose behavior is compatible with the standard Java
Pattern
library [30]
- Substantial and far-reaching changes to the automaton API and its underlying implementations. Radically altered the internal functioning of its matching code, storage and representation of state machines. Added a large number of tests based on standard regex test suites to identify and correct bugs [24], [46], [55], [57]
- Changed license to GPL 3.0
- Removed uses of
java.util.regex.Pattern
[45] - Similarly, the utility class
Exceptions
used reflection. The entire class was removed and all uses changed. Instead, exceptions were thrown normally, but their messages could be built using the fluid API ofTemplates
. [40] - The
structures
module used reflection in theSuppliers
utility; this was removed, and the required changes were made to the classes which were using the removed methods [37] - Altered
FileHandler
interface to throwIOException
rather than returningnull
as it did originally [21]
- Fixed errors in parsing
FeatureModel
[61], [64] - Changed
ClassPathFileHandler
to use its encoding field [48] - Failing tests in the
didelphis-sca
project revealed un-tested cases in this project [35] - The
Logger
class was found to exhibit some unexpected behavior when only aString
was provided as an argument with no template data [32] - The expression parser
SequenceParser
was not using special reserved strings while splitting inputs, but was not doing this [27]
Improved code test coverage and formatting consistency. Migration to use Lombok
for enforcing nullability contracts and for standard toString
, equals
,
etc.
- Created
Exceptions
utility class to provide a more fluent API for creating exceptions when needed
- Updated parsing of regular expressions and introducted
Automaton
to standardize classes which perform pattern matching - Started to use Lombok annotations in some code, especially to ease maintenance
of
equals
,hashCode
, andtoString
methods, as well as logging, delegation and - where appropriate - accessor generation [20] - Began finalizing automated code formatting rules and applied them to large portions of the project
- Cleaned up old documentation and corrected formatting
Introduced a number of important improvements and fixes, especially for code coverage and API flexibility
- Added
Twin
, a type ofTuple
where both elements are of the same type.Twin
also implementsList
, allowing it to be more easily used in some cases [17] - Created
FeatureType
interface for managing phonetic model values, allowing them to specify what values are well-defined, which are permitted, how to compute a difference between values, and how to convert feature values to Java primitives [15] - Added row and column iterators to
Table
classes [12] - Created tests for
DiskFileHandler
and others, greatly improving coverage [9] - Added support for resizeable tables via
ResizeableTable
interface [5]
- General refactoring of code for clarity and cleanliness [10]
- Removed restrictions on type parameters in phonetics classes [6]
- Refactored and tested two-key maps and multimaps [1]
- Unpacked recursive state machines for non-negative cases.
- Switched to use JUnit5
- Greatly refactored and generified
Segment
andFeatureModel
- Corrected inconsistent row & column parameter ordering in
Table
classes [3]
The first steps in building a common library from components of existing tools in order to reduce redundancy and to create consistency
- Extracted code from other projects where appropriate
Use the following for guidance: Keep a Changelog
Version logs should be broken into the following sections where possible:
- Added
- Changed
- Deprecated
- Removed
- Fixed
- Security
Keep an Unreleased version section for changes which are awaiting the next release. Try to add any changes to the top of the log section as you make them, and attach ticket links where possible.