Contributing to Newspeak

95 views
Skip to first unread message

quenti...@gmail.com

unread,
Jun 29, 2017, 5:14:13 PM6/29/17
to Newspeak Programming Language
Hi,

I have been following Newspeak progresses since it was announced many years ago. As a programming language, I like it a lot. It fixes most of the things I dislike about Smalltalk :-)

I'd be interested to contribute, but I'm not sure where I should start. There is a long list of issues on Bitbucket here: https://bitbucket.org/newspeaklanguage/newspeak/issues?status=new&status=open

Should I pick a random one in the list and try to fix it? Or do you have any suggestions?


I have a few more questions…

How can I submit pull requests? Should I fork the Newspeak repository and push commits to it, then submit these changes to the main repository?

How can generate JS apps such as the ones listed on the Demos page from Newspeak code?


Cheers,
Quentin.

Gilad Bracha

unread,
Jun 30, 2017, 12:49:14 AM6/30/17
to Newspeak Programming Language
Hi Quentin,

First of all, welcome and thanks!  I'm traveling until Saturday, but once I'm back I'll review the open issues list and see if I can make a suggestion.

I think that forking as you suggest sounds reasonable, but Ryan may have other ideas;

To generate JS apps, create an app (a class with a #package:using: factory, see the tutorial at http://newspeaklanguage.org/ns101/ns101.html for details) and use the deploy link that will appear in the upper right of the class browser.  Choose 'as Web Page' or as 'as Web Page with Mirror Builders' from the menu that pops up. The former produces a smaller app, but will only work for apps that don't use reflectively modify code at runtime. It avoids packaging the compiler with the app. The essence of the process is given in the tutorial.

I have a plane to catch, but I'll be in touch soon.

Quentin Mathé

unread,
Jun 30, 2017, 1:10:06 PM6/30/17
to newspeak...@googlegroups.com
Hi Gilad,

Thanks for your quick reply!

I'll play with forking a bit on Bitbucket. I haven't used MemoryHole yet, I need to read the explanations in the tutorial.

I'm going to try to generate a small JS app based on what you explained and see how it goes.

Cheers,
Quentin.

Gilad Bracha

unread,
Jul 9, 2017, 11:44:42 AM7/9/17
to Newspeak Programming Language
Hi Quentin,

How's it going? I looked at the issues list. They vary in their importance, but are mainly chosen because they do not require as much in-depth familiarity with the system. As such they are a good place to start.  Here then, are some suggestions: 228 194 181 97 90.

Quentin Mathé

unread,
Jul 10, 2017, 7:54:31 PM7/10/17
to newspeak...@googlegroups.com
Hi Gilad,

I tried to run various test suites and found a failure in CollectionsTestingConfiguration. For testSetNilElement, after 'set add: 'nil', 'set includes: nil' fails. So I'm working on this one currently.

From what I read in the code, 'empty' table slots are marked with nil, but this conflicts with 'nil' as a value. A solution could be to insert a NilMarker object every time a nil value is inserted in the table. If this looks like the correct fix, I'll finish to implement it.

I'll take a look the issues you listed and see which one I could tackle next.

Thanks for your suggestions.

Cheers,
Quentin.

Eliot Miranda

unread,
Jul 11, 2017, 10:42:51 AM7/11/17
to newspeak...@googlegroups.com
Hi Quentin,


> On Jul 10, 2017, at 4:54 PM, Quentin Mathé <quenti...@gmail.com> wrote:
>
> Hi Gilad,
>
> I tried to run various test suites and found a failure in CollectionsTestingConfiguration. For testSetNilElement, after 'set add: 'nil', 'set includes: nil' fails. So I'm working on this one currently.
>
> From what I read in the code, 'empty' table slots are marked with nil, but this conflicts with 'nil' as a value. A solution could be to insert a NilMarker object every time a nil value is inserted in the table. If this looks like the correct fix, I'll finish to implement it.

See the asSetElement solution in Squeak & Pharo. Note that a NilMarker isn't enough; how does one add a NilMarker to a set? The asSetElement approach fixes this.

Gilad Bracha

unread,
Jul 11, 2017, 11:05:18 AM7/11/17
to newspeak...@googlegroups.com
Sorry Eliot, but #asSetElement is absolutely unacceptable in Newspeak. Essentially, it exports a design flaw in one library to the rest of the system. It pollutes the namespace of Object and burdens users of sets with extra protocol.  I think something like NilMarker can be made to work, though some care is needed.

I'd lean toward using an EmptyMarker instead, so one does not have to check for nil. In any case, the marker object is private to the Collections module, and there is no need for anyone to ever add it to a set. 

Eliot Miranda

unread,
Jul 11, 2017, 3:40:29 PM7/11/17
to newspeak...@googlegroups.com
On Tue, Jul 11, 2017 at 8:05 AM, Gilad Bracha <gbr...@gmail.com> wrote:
Sorry Eliot, but #asSetElement is absolutely unacceptable in Newspeak. Essentially, it exports a design flaw in one library to the rest of the system. It pollutes the namespace of Object and burdens users of sets with extra protocol.  I think something like NilMarker can be made to work, though some care is needed.

I'm happy to disagree with you.  You may lean whichever way you want :-)



--
_,,,^..^,,,_
best, Eliot
Reply all
Reply to author
Forward
0 new messages