Giter VIP home page Giter VIP logo

buggy-cli's People

Contributors

gschup avatar lemaik avatar littlehelicase avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

buggy-cli's Issues

Mux inside a compound

Currently a mux can only detect recursive nodes inside of one compound. But if the mux is somehow encapsulated it should also work.

Make versions more robust

Currently versions are quite arbitrary and introduce a lot of extra work. The version should always indicate what is compatible. This mainly concerns the implementations in the component-library.

I would prefer a system where, as long as buggy is under heavy development, that the version stays below 1.0.0 and the minor version indicates the what dependencies are compatible. E.g. for the upcoming v0.6.0 release every node in the component library must have a 0.6.* version. Other version (like 0.5.*) are not valid.

This has the advantage that all version except the current release can be dropped and we use the newest compatible version in this sub release. In clojure files one could say (use 0.6.*) at the beginning of the file to choose compatible implementations.

A disadvantage is, that it is not possible to independently introduce changes to nodes that are not backwards compatible. Those changes would have to wait till the next minor release.

Ensure correct ordering in inputs / outputs

Currently we use the order of inputs / outputs in some places (e.g. partials and code generation). But the inputs are stored as an object and thus have no guaranteed order.

Add notification when installing dependencies

When installing dependencies, the buggy-cli can work for a while and it is not clear to the user what happens. It seems stuck. Add a simple notification to indicate that a package is installing and optimally information about the progress.

Add debugging possibility

Either create a server or compile to javasript and show debugging information in the interactive html page.

Information and controls that should/could be available:

  • "Step through", e.g. for every (selected) atomic
  • Current value of each channel
  • Log all events over a channel
  • Show waiting nodes
  • Show different recursion levels separately
  • Record / replay feature with black boxing compounds (could increase speed significantly?)

Differentiate into partial and call for lambdas

Currently lambdas are applied via apply which takes exactly one argument and one function. Partials can set one argument of a function and return a new function that takes one argument less.

It is cleaner to separate partials and calling the function. The call node represents a function call of an function without arguments, thus apply = call partial.

Add an API for the CLI tasks

The CLI tasks are all implemented in cli.js. It would be handy to use them in other projects programmatically and thus there should be an API.

Pinpointing graphtools does not always work correctly.

Creating SVGs currently leads to the usage of two different graphtools versions. This should be impossible, but it is not. I get the following toolchain:

[ { name: 'lisgy',
    module: '@buggyorg/lisgy',
    minVersion: '0.2.0-pre.1',
    consumes: 'input',
    produces: 'portgraph',
    activatedBy: [ '$<bin> input' ],
    args: 'input',
    version: '0.2.0-pre.1',
    graphtools: '0.4.0-pre.8' },
  { name: 'resolve',
    module: '@buggyorg/resolve',
    minVersion: '0.2.2',
    consumes: 'portgraph',
    produces: 'portgraph',
    activatedBy: [ 'resolve' ],
    version: '0.2.2',
    graphtools: '0.4.0-pre.11' },
  { name: 'portgraph2kgraph',
    module: '@buggyorg/portgraph2kgraph',
    consumes: 'portgraph',
    depends: [ 'resolve' ],
    produces: 'kgraph',
    version: '0.1.2',
    graphtools: '0.4.0-pre.8' },
  { name: 'graphify',
    module: '@buggyorg/graphify',
    consumes: 'kgraph',
    produces: 'svg',
    version: '0.1.27',
    graphtools: null } ]

It uses the version 0.4.0-pre.8 and 0.4.0-pre.11. There is currently no combination that can be selected. It should simply print an error indicating the impossible situation.

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.