newspeaklanguage / newspeak Goto Github PK
View Code? Open in Web Editor NEWNewspeak is a live object-capability language in the Smalltalk tradition
Home Page: https://newspeaklanguage.org/
License: Other
Newspeak is a live object-capability language in the Smalltalk tradition
Home Page: https://newspeaklanguage.org/
License: Other
A bit more involved than #106 , because we need a dialog to get the URI (except in the trivial case).
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.
Presumably model captures old test suite?
Abit more involved, because we need to be able to create individual bullets. Also nice to control bullet scheme, as in LaTeX \item, and number scheme (e.g., (a), (1) or (A)).
Strings show up in the messages menu of methods (and factories). If the strings are very long, the menu formatting goes out of control.
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.
As a developer, it would be easier to built Newspeak if it had a docker image with everything setup.
Exposing the objectViews method so it can be called from the outside (and so onecould add views to it) should be easy, no?
Bugs in IDE code cause the system to crash rather than opening a debugger.
There seems to be a leak somewhere. The size of the deployed vfuel varies depending on how large the IDE memory footprint is somehow. The time to deploy will likewise vary.
Any literal string in a method is currently displayed (truncated to length 64). Ideally, non-selectors should not be listed.
One might debate this; it can be useful to search for an occurrence of a literal string (but that doesn't actually work right now either). In any event, this is an exceedingly minor issue and not a priority at all.
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.
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.
User code can contribute object views to inspectors, and user printString methods are used in inspectors as well.
The IDE needs to trap these to avoid crashes.
We need a way to access git, and a reactive UI for it.
both search and regular senders/implementors should highlight the search term in the editor of the method they find.
This is slightly more complex than #105, because we need a menu of options to choose from.
For sections/headings, we could use support for both unnumbered (as in Googledocs) and numbered (as in LaTeX) sections.
Choosing Hn or sub...section, with a * at the end to indicate no numbering would be ok.
As the old Squeak version did.
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
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.
The browser can sort of do this for us, but:
a. This adds unwanted Browser chrome/boilerplate.
b. Doesn't work in standalone app.
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.
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.
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.
public aMethod = (
messageSelector 66
)
accepts and runs, assuming messageSelector works, and returns self.
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.
Necessary for many things - including the transition to a fully exemplar based IDE.
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.
Test
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.
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.
The progress bar leaves an extra entry?
Happy New Year!
I think I found a bug. To reproduce:
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?
This is due to a deficiency in the mirror, which Ryan's version corrects this, as well as dealing with magic selectors that are implemented directly by bytecode. Integrate. Unfortunately, this requires the new byte code set so a full reconciliation with Psoup is needed.
Very similar to #106, except we should use the color selection fragment instead of a menu.
When viewing the raw view, we'd like to be able to click and see the same point in the rendered view, and vice versa (as in TeXShop or Madoko).
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.
The show tests feature does not list any tests when it displays.
Except for the exposed view, the rest are not in the fragment tree. All views are recomputed at each update. So only the exposed one retains its state.
We should be able to interrogate aliens and show their properties, constructor etc. Even allow them to be modified, just like a Newspeak object.
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?
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.
In some cases, access control icons appear at giant size after an update.
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.
All of these features are essentially trivial variations on each other. They should all be relatively simple to create as variations of "Make it an Amplet", where the selected text is replaced by a suitable DOM node whose contents are the selected text.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.