Git Product home page Git Product logo

dylan-playground's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

cgay

dylan-playground's Issues

Display timing info

Could be fun to play around with mini benchmarks in the playground and share them.

Make something even simpler to use than benchmark-repeat: benchmarking (repeat: 10, print: #t) do-stuff() end which will either return the overall timing and allocation info or print it to the console, depending on the value of the print: argument. (benchmark-repeat returns a sequence of iteration values.)

Don't run previous exe if build fails

Don't run the previously built executable if the current build doesn't generate an executable. I suspect this means checking the mod time on the exe before starting the build and comparing after the build.

Prettify

  • Font is terrible.
  • Use some color

Elide deployment directory name in compiler output

/home/cgay/dylan/workspaces/playground/dev/play-f5a40c6e0ce5/main.dylan:6: Serious warning - Method { define method factorial (n :: singleton(0), #next next-method) => (#rest results) ... end } not congruent with generic function - the method's values list includes #rest, but the generic's values list does not
--------------------------------------
define method factorial (n == 0) 1 end;  // called when n = 0
--------------------------------------
/home/cgay/dylan/workspaces/playground/dev/play-f5a40c6e0ce5/main.dylan:7: Serious warning - Method { define method factorial (n :: singleton(1), #next next-method) => (#rest results) ... end } not congruent with generic function - the method's values list includes #rest, but the generic's values list does not
--------------------------------------
define method factorial (n == 1) 1 end;  // called when n = 1
--------------------------------------
/home/cgay/dylan/workspaces/playground/dev/play-f5a40c6e0ce5/main.dylan:8-10: Serious warning - Method { define method factorial (n, #next next-method) => (#rest results) ... end } not congruent with generic function - some of the method's required parameter specializers aren't subtypes of their counterparts in the generic
------------------------------------------------------------------
8  define method factorial (n)              // called for any other n
9    n * factorial(n - 1)
10  end;
---

Zombie processes

 3485 ?        Ssl    0:15 dylan-playground --config /home/cgay/dylan/workspaces/playground/live/config.live.xml --working-directory /
13103 ?        Z      0:00  \_ [sh] <defunct>
25202 ?        Z      0:00  \_ [sh] <defunct>
25307 ?        Z      0:00  \_ [sh] <defunct>

Presumably not calling wait() after process dies. Not sure whether it's the Playground's responsibility or whether run-application should always do it.

Show DFM and assembly output

Provide checkboxes to enable showing DFM and assembly output.

Currently there's a bug in -dfm for the regular-expression library so can't enable it.

Currently can only generate assembly for HARP back end, IIRC.

Limit share frequency

To avoid disk full DOS attacks, limit how often one client can share code. Guessing it has to be IP based.

Help button

Rather than linking directly to DRM, LibRef, etc, put a Help button with a menu of choices.

Use scalable storage structure

Currently playground code always goes in ./play-<hash-code>/. Should use a slightly deeper directory structure like ./xx/yy/play-xxyy<rest-of-hash-code> instead.

Could also store metadata about whether the playground was shared and GC the ones over a certain age that haven't been shared.

Allow sharing playgrounds

Basically store the example code semi-permanently based on the playground ID, but when the link is followed a new playground ID should be created so they don't conflict. I think. Probably need to set a long TTL but make a note that there are no guarantees.

Store metadata with shared code

Initial implementation just stores plain text of the code. Need a way to store metadata such as the version of the playground with which it was created so that I can use the correct module definition as that changes. Or possibly just the time the share was created.

Since we don't have Cap'n proto, probably compressed json.

Making this high priority so I don't have to do a data format change after we're using this more.

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.