Releases: ostis-ai/sc-machine
v0.10.0-Rebuild
Breaking changes
-
Python dependencies are set up locally in
.venv
environment. Therefore, you should make the following changes:- fix
docker-compose.yml
file to runhealthcheck.py
for sc-server in.venv
or usescripts/healthcheck.sh
that encapsulates this logic; - and use
.venv
to launch your python scripts if they use sc-machine python dependencies.
- fix
-
Build system of the sc-machine was upgraded:
- The way to manage build dependencies was changed to Conan. You can install sc-machine and its dependencies with Conan. You don't have to worry about installing sc-machine dependencies on your OS anymore. See how to do it -- Build System.
- CMake presets should be used to build the sc-machine. They are located in
CMakePresets.json
. - Location of the sc-machine build was changed. The following new locations are:
- build tree --
build/<Debug|Release>
, - binaries --
build/<Debug|Release>/bin
, - libraries --
build/<Debug|Release>/lib
, - extensions --
build/<Debug|Release>/lib/extensions
.
- build tree --
- Using sc-machine as a library is much more optimized: adding it to the CMake tree is no longer necessary. You can install sc-machine packages and import sc-machine targets into your cmake using
find_package(sc-machine REQUIRED)
. See how to do it -- Build System - Each release sc-machine binaries are being compiled for supported OS and formed as an archives on Github. Minimum required version of macOS is macOS-14 (arm), of ubuntu is ubuntu-22.04. The sc-machine doesn't support ubuntu-20.04 anymore. You can use sc-machine binaries to work with sc-memory or you can use
RunMachine
method fromsc-machine-runner.so
to create your own entry point to initialize sc-memory instead of using compiledsc-machine
binary. - Script for the project build (
build_sc_machine.sh
), scripts for running binaries (run_sc_server.sh
,build_kb.sh
) were removed from the sc-machine repository scripts. You should use sc-machine binaries directly. - sc-server is no longer entry point of the sc-machine, it is an extension (
sc-server-lib.so
), that is loaded dynamically when the machine is started. So,sc-server
binary was removed,sc-machine
binary was added instead. To specify host and port for sc-server without using config, use environment variablesSC_SERVER_HOST
andSC_SERVER_PORT
accordingly.
-
Config was changed:
repo_path
option in[sc-memory]
group was deprecated,storage
option was added instead;extensions_path
option in[sc-memory]
group was deprecated,extensions
option was added instead.
-
Sources of the sc-machine were separated into public and private ones. Public sources of targets are located in
include
directory, private ones - insrc
directory, tests for code - intests
directory. Private sources can't be included into project's code directly. Besides that there are changes of location of some API classes of the sc-machine:ScTest
class was made a part ofsc-memory
target. Use#include <sc-memory/test/sc_test.hpp>
to include it into code.- To include
ScsLoader
class into code, use#include <sc-builder/sc_loader.hpp>
.
-
Configuration of sc-machine tests was changed:
- Paths to test sources of the knowledge base, test configs, etc. are being configured at the pre-run stage, not at the stage of compiling tests.
- Working directory for tests was changed to a directory where tests are located. To run the tests, please use
ctest
rather than the test binaries themselves. - Scripts for running tests (
run_tests.sh
) was removed. Go tobuild/<Debug|Release>
and usectest
instead.
-
All questions was renamed to actions.
-
ScAddrHashFunc with template argument was removed. Use non-template ScAddrHashFunc without arguments. It is more safe in use.
-
Constructors for ScMemoryContext with string and int parameters were removed. Use the one without parameters instead.
-
HelperSearchTemplateInStruct was removed from ScMemoryContext API. Use SearchByTemplate with callbacks.
-
Deprecated sc-utils in 0.9.0 were removed from sc-kpm.
-
Questions were renamed to actions, answers were renamed to results.
-
m_memoryCtx
in ScAgent renamed tom_context
. -
Сode generation is no longer used as metaprogramming. The API for agents has been completely redesigned. See the documentation section on how to implement an agent with the new API -- C++ Agent Guide. We have
- completely moved from code generation to template programming;
- improved the API and aligned with our description of how it should be;
- simplified the API. Now it will be much easier to create agents, go right now and see how to work with the new API -- C++ Agents API.
-
All
ScMemoryContext
methods were redesigned to a common style. All methods with not correct names were deprecated, and new ones were added. See the table below to see which methods have been replaced.Deprecated method Substitution method CreateNode GenerateNode CreateLink GenerateLink CreateEdge GenerateConnector GetElementOutputArcsCount GetElementEdgesAndOutgoingArcsCount GetElementInputArcsCount GetElementEdgesAndIncomingArcsCount GetEdgeSource GetArcSourceElement GetEdgeTarget GetArcTargetElement GetEdgeInfo GetConnectorIncidentElements Iterator3 CreateIterator3 Iterator5 CreateIterator5 ForEachIter3 ForEach ForEachIter5 ForEach HelperCheckEdge CheckConnector FindLinksByContent SearchLinksByContent FindLinksByContentSubstring SearchLinksByContentSubstring FindLinksContentsByContentSubstring SearchLinksContentsByContentSubstring HelperSetSystemIdtf SetElementSystemIdentifier HelperGetSystemIdtf GetElementSystemIdentifier HelperResolveSystemIdtf ResolveElementSystemIdentifier HelperFindBySystemIdtf SearchElementBySystemIdentifier HelperGenTemplate GenerateByTemplate HelperSearchTemplate SearchByTemplate HelperSmartSearchTemplate SearchByTemplateInterruptibly HelperBuildTemplate BuildTemplate CalculateStat CalculateStatistics Removed method Substitution method BeingEventsPending BeginEventsPending -
All C++ sc-types were also redesigned to a common style. They were deprecated, new ones were added. See changes in the table below.
Deprecated Substitution ScType::EdgeUCommon ScType::CommonEdge ScType::EdgeDCommon ScType::CommonArc ScType::EdgeUCommonConst ScType::ConstCommonEdge ScType::EdgeDCommonConst ScType::ConstCommonArc ScType::EdgeAccess ScType::MembershipArc ScType::EdgeAccessConstPosPerm ScType::ConstPermPosArc ScType::EdgeAccessConstNegPerm ScType::ConstPermNegArc ScType::EdgeAccessConstFuzPerm ScType::ConstFuzArc ScType::EdgeAccessConstPosTemp ScType::ConstTempPosArc ScType::EdgeAccessConstNegTemp ScType::ConstTempNegArc ScType::EdgeAccessConstFuzTemp ScType::ConstFuzArc ScType::EdgeUCommonVar ScType::VarCommonEdge ScType::EdgeDCommonVar ScType::VarCommonArc ScType::EdgeAccessVarPosPerm ScType::VarPermPosArc ScType::EdgeAccessVarNegPerm ScType::VarPermNegArc ScType::EdgeAccessVarFuzPerm ScType::VarFuzArc ScType::EdgeAccessVarPosTemp ScType::VarTempPosArc ScType::EdgeAccessVarNegTemp ScType::VarTempNegArc ScType::EdgeAccessVarFuzTemp ScType::VarFuzArc ScType::NodeConst ScType::ConstNode ScType::NodeVar ScType::VarNode ScType::Link ScType::NodeLink ScType::LinkClass ScType::NodeLinkClass ScType::NodeStruct ScType::NodeStructure ScType::LinkConst ScType::ConstNodeLink ScType::LinkConstClass ScType::ConstNodeLinkClass ScType::NodeConstTuple ScType::ConstNodeTuple ScType::NodeConstStruct ScType::ConstNodeStructure ScType::NodeConstRole ScType::ConstNodeRole ScType::NodeConstNoRole ScType::ConstNodeNonRole ScType::NodeConstClass ...
v0.9.0-Unlock
Breaking changes
- All methods in C++ API for managing sc-memory throws exceptions if passed params are not valid or memory state is not valid
- All methods in C API for managing sc-memory returns error codes if passed params are not valid or memory state is not valid
- Removed deprecated sc-utils in 0.6.0, 0.7.0 and 0.8.0
- Removed deprecated make_all.sh
Added
- Config option
limit_max_threads_by_max_physical_cores
in[sc-memory]
to limit max threads by max physical threads - Config options
dump_memory
anddump_memory_statistics
in[sc-memory]
for enabling sc-memory dumps - Full md docs for sc-memory API on C++ with examples
- ScTemplate replacement presence check using varAddr
- Iterator5 AAAAF
- Divide params errors handling and memory state handling
- Provide errors and exceptions information into C and C++ sc-memory API
- Support for gwf <0.4.0
- Monitors for processes and thread synchronization
- Monitors tables for sc-addresses monitors and sc-event monitors
- Distribution of sc-segments by active processes and threads
- Internal sc-storage sc-segment-built-in lists for not engaged and freed sc-elements
- Clarify events managers for sc-storage: pick out subscription and emission managers
- Clarify context manager for sc-memory
- Common secured interface for sc-memory
- GetDecompositionAgent
Changed
- Optimize and move sc-memory dumps from sc-server to sc-memory
- Refactor all code by .clang-format 18.0.0
- Replace hyphens by underscores in files
- Replace underscores by hyphens in folders
- Update codestyle guide
- Update contributing guide
- Update .clang-format to 18.0.0
Fixed
- Separate setups for sc-server and sc-builder from main.cpp and test
- Script scg.min.js styles handling for sc.g-element types of KBE >0.4.0
- Sc.g-elements images in docs
- Support recursive curl braces in SCs-code level 2
- Support semantic sc-types for sc-node in SCs-code level 1
- Support sc-links for SCs-code level 1
- HelperBuildTemplate with params that have varAddr replacements
- Warnings for GNU compilers
- Warnings in sc-machine about deprecated methods
- Behavior of the agent_erase_elements on not his action classes
- Deleting existing and translated .scs sources with the same name
- Parse contours identifiers by gwf2scs-translator
- Symmetric sc-edges search
- sc-machine crashes when trying to view a picture in sc-web (311)
- No tests for ScMemory::Initialize(sc_memory_params) with different parameters (216)
- Too big number in websocket request crusher sc-server (309)
- Handle crush errors (63)
- Usage of invalid addresses after rerun failed sc-server (79)
- Invalid addrs crushes sc-iterator methods usages (66)
- All deadlocks and segfaults in sc-storage, sc-events and fs-memory (111)
- Processes and thread starvation
- Active waiting during sc-events deletion
- List items semicolons for sc.s-contours
- Internal sentences after sc.s-contour assignment
- Success of finishing the action is marked first and only then that it was finished
- Finish agent wait time
Deprecated
- Config option
sync_actions
in[sc-server]
, add optionparallel_actions
instead of - Config option
update_period
in[sc-memory]
, add optiondump_memory_statistics_period
instead of - Config option
save_period
in[sc-memory]
, add optiondump_memory_period
instead of - Method
getLinkContent
in sc-utils
Removed
sc::ResolveRelationTuple
andsc::SetRelationValue
- Deprecated sc-utils in 0.6.0, 0.7.0 and 0.8.0
- Deprecated make_all.sh
- Runtime asserts usage in sc-storage
- Atomic operations usage in sc-storage
- Locks usage in sc-storage
v0.8.0-Fusion
Breaking changes
- Now we use C++17 instead of C++14
- We support compatibility with old memory binaries
Added
- Add and get addresses by variable addresses in ScTemplateParams API
- Check sc-types in sc-memory API sc-elements creation methods
- Ability do not search for sc-links by substrings globally, passing config param
search_by_substring
- Ability do not search for sc-links by strings locally, passing param in SetLinkContent
is_searchable
- Generalize all scripts for applied projects
- Script
build_sc_machine.sh
with arguments-f
-t
and-r
instead ofmake_all.sh
- View kb fragment in scn if it is keyword
- Tests for repo-path parser and sources collector in
sc-builder
- Support for deprecated memory binaries build in 0.7.0 version
- Synchronize processes that works with file memory and sc-dictionary
- Get replacements in template result by variable addresses
- Divide strings file into more small files with fixed size by requested configs
max_strings_channels
andmax_strings_channel_size
- Configuration of docker-compose.yml using .env file
- Script
run_tests.sh
- Full tests for file memory API
- Intersect/unite search sc-links by strings and substrings in file memory
- Search strings and sc-link hashes by terms in file memory
- File memory on file system, save strings in file system disks
- Configure events and agents threads in sc-memory, passing config param
max_events_and_agents_threads
- Loop-ranged API method for sc-template search (78)
- Full tests for sc-template API
- Sc-template cycle preventing search
- Sc-template equal triples search
- Sc-template search API to get and use constructions step by step
- Sc-template search API to custom filter constructions with step by step search
- Sc-template search API with request commands (continue search, stop search and error during search)
- Cover all sc-template search and gen API with tests
- Order triples by type and dependencies with other triples
- Count input/output edges in elements during edges adding
- Order triples by input/output edges count for triple items
- Determined sc-template depth-first search
- Sc-template safe API without exceptions handling
- Extend create elements by SCs in
sc-server
with outputStructure field - Write docs for system identifier set/get/find/resolve sc-memory API
- Extend set/get/find/resolve sc-memory API with out system identifier fiver parameters
- Insert sc-keynodes in global knowledge base during sc-memory initiation
- Save sc-memory by period in sc-server, passing config param
save_period
in seconds - Dump statistics by period in sc-server, passing config param
update_period
in seconds - Agent for erasing sc-elements not belonging to the global structure
init_memory_generated_structure
- Transfer init memory generated structure to modules initialization, passing config params
init_memory_generated_upload
andinit_memory_generated_structure
- Possibility to skip keys defined in .ini config file in ScConfig
- Pre-commit code style checks for C++ and Python
- Add reversed edges according to standart
- Sc-links classes
![]!
in SCs - Insert sc-keynodes and their system identifiers in global knowledge base during sc-memory initiation
- Extend create elements by SCs in
sc-server
with outputStructure field - Write docs for system identifier set/get/find/resolve sc-memory API
- Extend set/get/find/resolve sc-memory API with outer system identifier fiver parameters
- CI for documentation build
- Add output structure builder feature to config
- Add validation of system identifier
- Append generated elements by
SCs-helper
into requested output structure - Oriented sets representation (<a, ..., b>) in SCs
- Build docs in SCn format separately from
ostis-web-platform
Changed
- Replace asserts in sc-memory API by exceptions throwing
- Refactor sc-server logs
- Decrease wait time for sc-element referencing in iterators
- Call gwf-translator in sc-builder
- Move repo path parser from Python to C++ in sc-builder
- Unite ScTemplateGenResult and ScTemplateSearchResultItem into ScTemplateResultItem
- Remove list to array translations in C API for file memory
- Upload text and binary files in realtime by get API
- Remove string lengths recount in file memory
- Optimize int to string translation in file memory
- Use iterators instead of sc-template in
getNextFromSet
util - Generalized
docker_entrypoint.sh
, this script can be used by external projects now - Now in tests all agents works in single thread
- Replace asserts in sc-template search and gen API by exceptions throwing
ScsLoader::loadScsFile
return bool instead void- Update garbage deletion agent logic, add check if element belongs to init memory structure
- Make scsi pre-processor migrations script
- Move to C++17
- Remove 1 minute assert in
ScWait
- Add language parameter for sc2scs-json-translator to get elements identifiers
- Append to sc2scs-json elements main/system identifiers
- Replace row strings by nlohmann-json in sc2scs-json-translator
Fixed
- Check OS type in
install_dependencies.sh
- Check apt command for Linux OS in
install_deps_ubuntu.sh
- Create sc-links with ScType::Link type in Debug mode
- Change memory statistics fields types from sc_uint32 to sc_uint64
- Return empty sc_addr if not found by identifier in
sc-helper
- Build kb script doesn't ignore whitespace (239)
- Docker entrypoint throws integer expression expected (267)
- KB directory coping to prepare gwf and scsi sources
- Tests for template build and gen with params
- Aliases checking in build by scs
- Not use system identifiers of vars in sc-template-build
- Sc-template search by empty template (65)
- Segfaults in test sc-client
- Creating sc-keynodes without defining type. Now they will be created with const node type.
- Converting to string params from configs
- Fix hashes size in fs-storage (45)
- GetLinkContent skip whitespaces in strings
- No inserting system identifiers of keynodes to output structure (223)
SCs-helper
doesn't return generated identifier links (207)- No json string message parsing in
sc-server
(WebSocket request dumps sc-machine) (190) - SCs-file dumps kb-builder by WebSocket (189)
SCs-parser
create structure twiceSCs-parser
doesn't unite all generated elements into structure (205)- Link deletion (193)
- Add curl to installation script
- Fix memory clear parameter reading from .ini config file
- Merging identifiers in sc-dictionary (192)
- Dependence order in var template search triples (186)
Removed
- Windows files and cmake dependencies
- Prepare kb step and
prepare_kb.py
- Rocksdb file memory
- Garbage deletion agent
v0.7.0-Rebirth
Breaking changes
- Binaries are built in the
bin
folder located near the CMake build tree. This will affect any project using sc-machine as a CMake subproject. - Add
;
afterSC_LOG_INFO
,SC_LOG_DEBUG
,SC_LOG_WARNING
andSC_LOG_ERROR
calls in projects that use sc-machine. - Add
;
afterSC_ASSERT
calls in projects that use sc-machine. - Remind that all binary content are stored in sc-fs-storage as base64 string.
- sctp-server was removed, move to sc-server usage.
- SC-machine doesn't support ubuntu versions lower than 20.04.
Added
- Implement sc-link content removing from sc-storage
- Add command to find links contents by content substring into sc-server
- Implement find links contents by content substring into sc-server
- CI for docker build and run
- CI for ubuntu-22.04 and latest macOS
- Add ScExec class to execute system commands
- Test for utils for work with actions and their results
- Handle and save sc-server subcommands errors
- Add sc-server healthcheck
- Add tests for sc-search agents in sc-kpm
- Write sc-machine idea into readme
- Add create elements by scs-helper through sc-server
- Add CI workflow for sanitizers
- Add find links by substring in sc-server
- Initial development container support
- You can now run sc-machine in Docker
- Unite configuration for sc-server and sc-builder
- Write docs in scn-latex for sc-server
- Implement sc-memory configurator
- Implement sc-options for sc-server and sc-builder usages
- Implement sc-server on C++
- Add string API for set and get link content
- Add opportunity to search sc-links in
sc-dictionary
by content substr - Excludes for files and folders in repo.path
- Automatic usage of ccache to speed up builds
- Add CI for
rocksdb
andsc-dictionary
- Implement
sc-dictionary
. Add opportunity to switchrocksdb
andsc-dictionary
- Wrap and separate allocating, assertion, notification and atomic lock free procedures
- Add tests module for sc-agents-utils
- Add opportunity to configure sc-machine version from CMakeLists.txt
- Add scripts to build kb, run sctp-server and run sc-server
- New flag options for build_kb
- Add default python modules paths to python initialization
- United config file
Changed
- Fix sc-server json casts to strings
- Check sc-server run in tests
- Flag --tests for sc-server to run and quick stop it
- Fix glib casts on ubuntu-20.04 and macOS
- Store binary content as base64 string
- Update action utils to use the new logic for waiting for action results
- Fix logic of waiting for action results
- Entrypoint of Docker image is now easier to work with
- Update commit badges
- Up codecov target from 40% to 75%
- Up codecov level from 62% to 78%
- Separate ci workflow: check pr-commit, codestyle and tests
- Revamped README.md
- Unify sc-builder and sc-server config and params usage
- Change sc-machine config file structure
- Fix gwf2scs-translator. Add opportunity to parse russian identifiers
- Simplify main CMakeLists.txt
- Add tools macros for main CMakeLists.txt
- Separate dependencies specifying from main CMakeLists.txt
- Correct typos
- Fix warnings in sc-memory modules
- Fix scs-grammar. Add opportunity to specificate a structure into this structure itself
Removed
- Remove find by substring logic from sc-dictionary
- Remove legacy gwf-translator for 0.3.0 gwf sources from sc-builder
- Remove legacy glib-based tests
- Remove boost usage for options parsing in sc-server and sc-builder
- Unlink boost-python-lib from sc-machine
- Remove mkdocs for sc-server
- Remove sc-python-interpreter support
- Remove sc-python-module support
- Remove python sc-server
- Move logic rule utils and keynodes to ostis-inference
- Remove sctp-server
- Remove scp-interpreter
v0.6.1
Added
- Search by template with params in C++ API
- Sanitizers
- Benchmarks
- Clang code formatting
- Common utils for C++ API
Changed
- Migrate test system to
gtest
- Update macOS install_deps script
- Multithreaded build process used by default
- Move changelog to Keep a Changelog format
Removed
- Moved React web interface in a separate new repository.
- Remove optional search triples support