Giter Club home page Giter Club logo

newspeaklanguage / newspeak Goto Github PK

View Code? Open in Web Editor NEW
128.0 14.0 11.0 46.41 MB

Newspeak is a live object-capability language in the Smalltalk tradition

Home Page: https://newspeaklanguage.org/

License: Other

Smalltalk 55.99% JavaScript 19.60% Shell 0.43% Python 0.02% Swift 0.27% C 0.01% HTML 0.50% StringTemplate 23.05% Dockerfile 0.01% CSS 0.12% TypeScript 0.01%
newspeak programming-language live-programming capabilities actors mirrors modularity

newspeak's People

Contributors

bwestergaard avatar danielsz avatar eliotmiranda avatar fbanados avatar fgeller avatar gbracha avatar jiridanek avatar miciurash avatar mzimmerm avatar no-defun-allowed avatar outcue avatar rmacnak avatar semitonegene avatar skrynski avatar tcloudb avatar tessi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

newspeak's Issues

Ampleforth window sizing is problematic

Ampleforth window sizing should adapt dynamically to the available real estate in the OS window. It doesn't, and so instead the solution is to give the rendered view a fixed width (that is resizable). The problem likely goes much deeper, to Hopscotch itself. Intermediate solutions might at least try and adjust to the toggling of the raw view.

Long strings mess up messages menu

Strings show up in the messages menu of methods (and factories). If the strings are very long, the menu formatting goes out of control.

Ampleforth needs to evolve into a fully functional GUI builder

Given that we can define documents with widgets, the editor is inherently a GUI builder; simply define a document with widgets, but without text. However, this approach needs to be refined to make it a natural and convenient way of creating UIs.

Docker build

As a developer, it would be easier to built Newspeak if it had a docker image with everything setup.

Tool tips

We should add a tool tip abstraction to Hopscotch. Probably build it on top of a separate hover functionality. One use for this might be to replace most of the existing help text, which mostly describes individual UI controls, with tool tips that provide the same explanations in more compact form.

Implement transient slots.

As the old Squeak version did. They are needed long term of orthogonal sync, but also for implementing images and most immediately, for improved liveness. Every cached slot should become a transient one, and every time it's code is redefined, the slot should be nil'ed (as with sync) and the data will be be recomputed - ensuring instant live update.

"Find references" on methods acts as a toggle after not selecting from the popup (very minor)

Steps to reproduce

Navigate to Browsing>>ClassPresenter

Click the "find references" button on #acceptResponse
Actual = Expected: Popup shows with method name acceptResponse and other messages named inside - this is correct
Click outside the popup
Click the "find references" button on #acceptResponse again
Expected: Popup shows with method name acceptResponse and other messages named inside
ACtual: Nothing happens

Search results do not maintain their expansion state if there is an update.

May require tagging the individual mirror groups. But the problem may be with the fact that elements are deferred, and DeferredContentComposer doesn't update the deferred fragments.
Indeed, when it updates, it never compares the results of the old deferred computation to the new ones - it just installs the new ones when they are ready. Presumably it should update the old deferred part using the new deferred part. This may be tricky because the visuals may disappear underfoot if we replace them with the initial values.

Import and Export slides from Telescreen

One should be able to import or export slides as documents. One should also be able to do this with groups of slides to be exported (to new presentations) and also import groups of documents. Ideally drag and drop.

Display graphical results links in evaluators

Evaluating an image produces textual link; we should be able to use image links in such cases. In general, if a result has a graphical view, we should use produce an image link.

System crash in workspace when message widget is closed after syntax error

Steps to duplicate:

From a follow up by Gilad on the google group, this is a system crash:

What happens is that, when we have a syntax error, clearing the result list gets to deal with a parse error instead of a thread, which is what it expects. And, because we have a longstanding problem that crashes within the IDE don't go to the debugger, the result is a complete crash :-(. The system is dead; the editor is a CodeMirror editor, and it's javascript code keeps responding to events, so you can still type into it - so it may not be obvious that the system actually crashed.

Searches for sends to methods that have no definition do not find anything

Unimplemented messages that are sent do not show up in search results - we don't have a good way to find these, as we don't have a fixed selector to ask for senders of. We would need to scan all sends (as opposed to just all definitions) and pattern match against them. Might be very costly. Could be mitigated by searching for senders of a fixed selector, but won't handle wildcards. Unless we get all instances of symbols used in sends and store them, and pattern match against those.

Implement metadata

Necessary for many things - including the transition to a fully exemplar based IDE.

Ampleforth reactive update doesn't work across distinct presentations of the same document

If one has multiple presenters on a given document - perhaps due to transclusion, or debugging or whatever other cause - changes in one presenter are not automatically propagated to others. This is because most changes to a document do not invoke updateGUI: . Rather, they cause instant live updates to the presentation by modifying the raw HTML (possibly driven by DOM updates) and recomputing the presentation. This works well, and is much more efficient than updateGUI:, which is much too slow to be invoked on every keystroke as required. However, it leads to the problem this bug describes. The fix should be to have document presenters explicitly connect via ducts.

Restore black market access in debugger

Squeak-based Newspeak had a feature that allows one to access elements that are not in scope while debugging. We need to support this in the web version. Indeed, this mechanism has uses throughout the IDE, in object presenters and methd evaluators, when defining exemplars etc. It may be worth extending it to provide convenient access to non-public members, to pre-existing exemplar data etc.

Ampleforth could use reference/footnote/citation/bibliography support

This may be start our as a variant of HTML links or HyperlinkFragments referencing a list of papers, but we'd want nice naming or numbering automatically, and transcluding individual entries from something akin to bib files . Importing .bib files would be super nice.
You'd want to expand the citation in place on demand, as well as a(n optional) list the complete Bibliography at the end as in print (the latter is good for having a complete list of references, and for printing versions for submitting papers. Submitting has other issues though - page numbers, and generally the requirements venues have for mainstream formats.

Likewise, footnotes. In principle they make no sense in an online format, just as page numbers don't. But they make sense when printing out.

IDE freezes expanding class

Happy New Year!

I think I found a bug. To reproduce:

  1. Open https://newspeaklanguage.org/samples/primordialsoup.html?snapshot=HopscotchWebIDE.vfuel
  2. Search for Workspace using the search bar. Two classes are found.
  3. Expand one of classes using >. The class expands.
  4. Try to expand the second class. The IDE freezes.

It does not matter which of the two classes I expand first.

I tried it on Chrome and Safari on macOS 12.6.2. Both behave the same.

Is there a way to halt execution and enter a debugger?

Use PWAs instead of Electron

The electron app is huge. We should create a progressive web app utilizing the local browser, rather than having to download all of chromium. This would also mean that every app, not just the IDE, could be plausibly deployed as a standalone app and not just a web page.

Add custom view for JS objects

We should be able to interrogate aliens and show their properties, constructor etc. Even allow them to be modified, just like a Newspeak object.

Add custom view for DOM nodes

In the case of aliens that are DOM nodes, we should be able to display them as HTML.
Is there an HTML pretty printer exposed in the browser?

Complete Exemplar support

Class presenters now support exemplars, but we need to:

a. Add metadata for most classes.
b. Automatically generate exemplars for classes with unary factory selectors.
c. Add exemplar support for methods.

Adding members in debugger in response to DNU may fail

The debugger has a feature that allows you to immediately add a method/class/slot in response to a DNU. The problem is that it fails in cases where the receiver class has exemplar data. The code operates browsing the receiver class and manipulating the presenter that is active at that point. The code predates the introduction of exemplars. When it was written, browsing a class meant that the current presenter would be a class presenter. Now, however, it may be an object presenter (in cases where the class has exemplar metadata). Object presenters do not respond to the same messages as class presenters, and so things go bad.
We can extend object presenters with the missing methods, or change the code to check what the current presenter is and act accordingly. I think the former is cleaner.

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.