Skip to content

Changes

Ongoing

v0.0.3

  • rename myClorm.HashableList into myClorm.ImmutableList
  • introduce multimap.Multimap[K,V] as an immutable mappng from keys K to sets of values V
  • add custom converter hooks for generic aliases in myClorm
  • clean-up post processor and unify handling of optimization directives
  • support preferences in the ground engine
  • skip internal values in the models
  • introduce warnings type(notImplemented) and type(notSupported)
  • fix a tuple evaluation bug
  • introduce set and multimap as possible variable declarations
  • support optimization in the ground engine
  • implement float equality operators extensionally
  • normalize float constant representation
  • avoid generating badValue warnings for internal variables
  • avoid displaying detailed pytest-benchmarks statistics
  • unify testing of reasoning modes with testing of base solving
  • replace .expected.models with .expected.stats contains key-value pairs
  • use pytests's xfail and skip

v0.0.2.dev13

  • introduce caching for Clorm type resolution within myClorm.py.
  • fix typo in commented-out alternative variable guessing implementation inside finiteDomain.lp.

v0.0.2.dev12

  • introduce caching for Python functions and dynamic Python executions and evaluations.
  • split pythonIsTuple and pythonReify in rule bodies to prevent pythonReify from being called for non-tuples.
  • drop support for predicates conditional_hasValue and conditional_hasNoValue
  • fix typo in different-arity tuple equality and add a corresponding unit test
  • introduce variable(reservedName) warning
  • update the correction format.

v0.0.2.dev11

v0.0.2.dev10

  • introduce the phase_request/2 predicate.
  • avoid badValue warnings for ssa internal variables
  • introduce a correction mechanism to adjust the solving
  • reorganize preprocessing into phases
  • introduce variable_declare(X,definition), variable_declare(X,set), and variable_declare(X,multimap)
  • restrict engine interpreation to compile, ground, propagator, none
  • drop support for assign/2 declarations
  • drop support for while statements
  • rewrite the handling of executions to be entirely SSA-based
  • add optimization result atoms optimize_value/3

v0.0.2.dev9

v0.0.2.dev8

  • no changes, rerelease due to missing ci

v0.0.2.dev7

  • add supoort for tuple-expressions
  • deprecate assign/3
  • allow python expression as expression and not only as operators
  • ensure that execution_declare defines its output variables regardless of execution_run. If there is no corresponding execution_run the variables take the value none.
  • raise warning atom(syntaxError) when a set, variable, or multimap atom is malformed
  • introduce bool_evaluate
  • fix optimize_maximizeSum and declare_variable regressions introduced in v0.0.2.dev6
  • add engine-specific performance benchmark sessions and pytest-benchmark compare workflow for saved benchmark runs

v0.0.2.dev6

  • remove define from the supported declarations
  • add ceil and floor operator to int in compile engine, they behave like identity
  • raise warning atom(syntaxError) when an execution, optimize, or preference atom is malformed
  • rename forbid_warning and ignore_warning to warning_forbid and warning_ignore; allow an optional label argument for warning_ignore
  • raise warning statement(syntaxError) when a statement is malformed
  • Use bad instead of none for set operator python evaluation
  • Update CI to run fewer smoke tests and to test only one configuration on routine commits. Enable caching for routine commit tests.
  • Support ceil operator in compile engine and add corresponding test.
  • Support non-fact variable_domain declarations in the propagator engine.
  • Rename the string type from str to string and update examples, tests, and documentation accordingly.

v0.0.2.dev5

  • improve performance for integer addition
  • turn variable_declare's non-determinism to be between values rather than expressions
  • introduce optional label argument to variable_domain and variable_declareOptional, if unspecified, it defaults to the label of the corresponding variable_declare atom.
  • introduce optional label argument to evaluate
  • raise warning expression(syntaxError) when an expression is malformed
  • evaluate declarations now also generate expression-related warnings
  • Introduce warning variable(badValue) that is emitted when the value of some variable is bad
  • Introduce set_baseDomain/2 to allow non-deterministic set definitions.
  • remove recoverable
  • introduce _operator_recoverable/1 and use it for every currently recoverable operator
  • isin for sets is now set_isin
  • notin for sets is now set_notin
  • isin for multimaps is now multimap_isin

v0.0.2.dev4

  • Use an aggregate to compute sum in the compute engine
  • Remove negated hypothesis in the compile implementation of multiplication
  • Add handling of bad values in the propagator
  • make the following operators recoverable: conj, disj, pow, limp, ite, if, default
  • declaration Identifiers are now optional Labels
  • convenience case optimize_maximizeSum/3 has the label removed and is now optimize_maximizeSum/2
  • convenience case preference_variableValue/3 has the label removed and is now preference_variableValue/2
  • convenience case preference_holds/2 has the label removed and is now preference_holds/1

v0.0.2.dev3

  • use computeIdx instead of compute
  • avoid patterns of the form "p(A) :- q(A), r(A), not s(A), A=some(term)." in favor of "p(some(term)) :- q(some(term)), r(some(term)), not s(some(term))." to work around gringo's heuristic getting it wrong.

v0.0.2.dev1

  • updated python version in CI
  • updated docs

2026-03-10

  • Drop blanket declaration of eq and neq for any type T.
  • Fix type declaration of some operators that do not return floats (int_div,leq,etc.)
  • Fix #167 and fix multimap_fold only working for some operators in compile engine

2026-02-24

  • max operator now available for int (previously only float supported max)
  • min operator now available for int
  • min operator now available for float

2026-02-23

Functionality

  • int_div (previously div) now always returns an int value on success.

Renames

Old Name New Name
External
makeSet set_make
div int_div
fdiv float_div
Internal
compute _compute
computeIdx _computeIdx
computed _computed
computedIdx _computedIdx
stageCompute _stageCompute

v0.1.0

  • create project