Code Monkey home page Code Monkey logo

zebradb-core's People

Contributors

fsvieira avatar mortonfox avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

zebradb-core's Issues

Add npm package

There is already a npm package but there is a lot of garbage published, they is the need to select files to be published.

Also we need to add instructions on readme file on how to install zebrajs using npm.

Storage Engine support

Zebradb-core has an database api alike, but currently stores everything on memory.

We need a storage engine to make data persistent, like other databases this should be plugged to zebradb-core like a plugin or something. We should be able to have different storage solutions to different context like browser (localstorage), node filesystem storage ... and so on.

Remove history md

Put history information on wki, documentation or issues and remove it.

Clean up and organize code

Currently zebrajs works using a pipeline, data flows to states that process data and send it to other state, we need to organize this transitions states into folders and clean up the code to be as simple as possible.

Handle infinite data with finite representations.

Currently there are some tests with infinite data, they stop because the zebradb-core allows to put a limit on branch depth creation.

For example natural numbers are infinite, one of the definitions can be (nat 0) (nat (nat 'x)) witch are
infinite, the idea is to make an finite representation something like (nat (nat 'x=[0 | (nat 'x)]).

Solve send more money

Send more money is one of the tests that doesn't work yet.

The reason to not work is not incorrect definitions, because with a different planner zebradb-core is able to solve it reasonable fast.
There is two problems, one is resource consumption, where zebradb-core creates to many branches that
will growth exponential and consumes time and memory, the other problem is the way zebradb-core is working right now it makes it difficult to make a good general planner.

So the plan is a part of zebradb-core to extract variable domains, or partial variable domains and apply a kind of constrain satisfaction algorithm.

Lint code

Add a Linter to the project with a good guideline rules file.

Update documentation

Update all documentation including latex documentation, now that almost everything is defined.

Make a website

Every project needs a website, I think its time to get one.

Handle cyclic definitions

There is already a test with cyclic definitions currently not active until a way to handle them is decided.

The normal way to handle cyclic definitions is not allowing cyclic definitions by ignoring them or just by throwing an error.

I would prefer to make it as a feature, and treat them as equivalent definitions.
For example x = 0 or x = 0 + 0, they are the same but not exactly equal to zebradb-core.

This is obviously a simple example, I came across cyclic definitions when I was trying to define propositional logical rules, I got cyclic definitions because a variable could be two things, but logically speaking it was correct, they work as reduction rules.

Improve readme

Improve readme file, make it more clear and minimal.

  • Small description of project,
  • Link to website,
  • Install instructions,
  • Small usage example,
  • Links to documentation (wiki),
  • Links to other related projects using the lib.

Multi-threading support

Multi-threading support using web-workers or threads, we should get a lib that works on node and browser.

Currently zebradb-core almost everything is prepared for multi-threading on the processing side, data is already serialize able and branches are isolated from other branches, so there should be a big deal to make the processing of multiple branches on different threads.

Testing output

The conversion of results to strings prints misleading variable names, has it keeps the original variable names, this must be changed to output original variable name and an id, has different variables can have the same name but they can't have the same id.

Also the printed string is using @ to mark checked tuples, this should not be used for negations on any tuple or inner-tuples, because negation are successfully (and marked with !) when a negated query fails and therefor all its inner-tuples don't need to be checked, this will also solve the problem of tests with different outputs when planner changes.

Transformation language

Currently output can be transformed using a crippled JavaScript, but there is the need for a better transformation language, with the following features:

  • Security, the code should not have access to JavaScript or any other potential dangerous features,
  • Total, the code should be guaranteed to terminate,
  • Pattern matching with tuples,
  • Output JSON or String.

Other features like recursive functions and basic arithmetic operations are a plus but not a priority.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.