Skip to content

Releases: ostis-ai/sc-machine

v0.10.0-Rebuild

21 Jan 10:44
4ead422
Compare
Choose a tag to compare

Breaking changes

  • Python dependencies are set up locally in .venv environment. Therefore, you should make the following changes:

    • fix docker-compose.yml file to run healthcheck.py for sc-server in .venv or use scripts/healthcheck.sh that encapsulates this logic;
    • and use .venv to launch your python scripts if they use sc-machine python dependencies.
  • 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.
    • 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 from sc-machine-runner.so to create your own entry point to initialize sc-memory instead of using compiled sc-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 variables SC_SERVER_HOST and SC_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 - in src directory, tests for code - in tests 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 of sc-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 to build/<Debug|Release> and use ctest 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 to m_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 ...
Read more

v0.9.0-Unlock

22 Jan 10:03
70cc34e
Compare
Choose a tag to compare

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 and dump_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 option parallel_actions instead of
  • Config option update_period in [sc-memory], add option dump_memory_statistics_period instead of
  • Config option save_period in [sc-memory], add option dump_memory_period instead of
  • Method getLinkContent in sc-utils

Removed

  • sc::ResolveRelationTuple and sc::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

24 Sep 14:00
62f59c4
Compare
Choose a tag to compare

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 of make_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 and max_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 and init_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 twice
  • SCs-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

23 Oct 10:17
Compare
Choose a tag to compare

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 ; after SC_LOG_INFO, SC_LOG_DEBUG, SC_LOG_WARNING and SC_LOG_ERROR calls in projects that use sc-machine.
  • Add ; after SC_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 and sc-dictionary
  • Implement sc-dictionary. Add opportunity to switch rocksdb and sc-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

27 Apr 09:35
90c9605
Compare
Choose a tag to compare

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