<html><head></head><body><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div></div>
            <div>If we're talking about a new instruction set, and removing pieces from the runtime, then are we still talking about a minimal Erlang, or are we talking about something new? </div><div>Because I'm sure we could all think of thing's we'd change given the opportunity. Joe's already written Erl2. <br><br>-Brady</div>
            
            <div id="yahoo_quoted_6471591123" class="yahoo_quoted">
                <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                    
                    <div>
                        On Tuesday, September 26, 2017, 12:36:04 PM EDT, Joe Armstrong <erlang@gmail.com> wrote:
                    </div>
                    <div><br></div>
                    <div><br></div>
                    <div><div dir='ltr'><html><body>On Tue, Sep 26, 2017 at 5:47 PM, Todd Greenwood-Geer<br clear="none"><<a shape="rect" ymailto="mailto:t.greenwoodgeer@gmail.com" href="mailto:t.greenwoodgeer@gmail.com">t.greenwoodgeer@gmail.com</a>> wrote:<br clear="none">> Hi,<br clear="none">><br clear="none">> 1. Are there existing TLA+ specifications [1] for Erlang?<br clear="none"><br clear="none">Not that I know of.<br clear="none"><br clear="none">><br clear="none">> Recent discussions regarding the behavior of messages for local and remote<br clear="none">> processes, the behavior of data in ETS, and the discussion about a new<br clear="none">> mini-erlang all make me think there would be great benefit in formal<br clear="none">> specifications of Erlang behaviors.<br clear="none">><br clear="none">> For instance, I've been thinking about writing various widgets for<br clear="none">> distributed applications, each with a well defined TLA+ specification, and<br clear="none">> then starting to compose larger and more interesting applications from them.<br clear="none">><br clear="none">> My workflow would look like this:<br clear="none">> Write widget spec -> impl widget -> Write application spec (composed of<br clear="none">> previously spec'd widgets) -> impl application -> profit!<br clear="none"><br clear="none">Now sure about the profit bit at the end.<br clear="none"><br clear="none">(write crap, sell it, sell thousands of consulting hours to fix it = profit :-)<br clear="none"><br clear="none">><br clear="none">> The runtime behaviors such as message passing, process linking, etc. would<br clear="none">> be the first level that would need specifications... so has this ever been<br clear="none">> tackled?<br clear="none"><br clear="none">Years ago - but not in phase with the distribution.<br clear="none"><br clear="none">There has always been a bit of gap between reality (C code, and what<br clear="none">it does) and specifications (math, and what it should do). The two are<br clear="none">not the same.<br clear="none"><br clear="none">><br clear="none">> 2. Regarding the mini-erlang, I'd really like to get involved in this<br clear="none">> project. Perhaps I should be replying to a separate thread, but my questions<br clear="none">> are:<br clear="none"><br clear="none">There is no project - just a few people discussion what they would like to see<br clear="none">in a new system.<br clear="none"><br clear="none"><br clear="none">><br clear="none">> * What are the goals of mini-erlang?<br clear="none"><br clear="none">My goal would be a tiny kernel - performance is<br clear="none">of secondary importance. Tiny run-time footprint.<br clear="none"><br clear="none">> * How are these goals different from Erlang?<br clear="none"><br clear="none">The current Erlang is not designed for a small memory footprint.<br clear="none"><br clear="none">> * What needs to be removed/added from Erlang to make mini-erlang?<br clear="none"><br clear="none">Remove NIFS binarys ets tables (possibly)<br clear="none"><br clear="none">> * What is the current VM instruction set, and what would be the Mini<br clear="none">> instruction set?<br clear="none"><br clear="none">Current is BEAM - Mini instruction set unknown.<br clear="none"><br clear="none">> (my reason for posing these questions in this thread)<br clear="none">> *** Is there any interest in modeling/specifying the behaviors prior to<br clear="none">> implementing?<br clear="none"><br clear="none">I dont' think so - the main problem is figuring out how to make something<br clear="none">with tiny footprint - so for example GC strategy and memory layout is<br clear="none">very important - I don't think modelling helps. Counting bytes on squared paper<br clear="none">seems the best method (really)<br clear="none"><br clear="none">><br clear="none">> Regarding implementation, I'm fairly agnostic. One thought is that a<br clear="none">> prototype could be written in anything (python, bash, java, go, c, etc.),<br clear="none"><br clear="none">I disagree - I'd like the final memory footprint to be small.<br clear="none">c (and friends) are OK but I don't want to have to include an entire JVM<br clear="none">(or whatever).<br clear="none"><br clear="none">Could implement it in Forth though ...<br clear="none"><br clear="none">> and once the design has settled down, then anyone should be able to go back<br clear="none">> and re-write in their language of choice. Should be fairly simple since<br clear="none">> there would be design docs, formal specifications, test suites, etc. Then we<br clear="none">> could have mini-erlang runtime competitions/shootouts ;-).<br clear="none"><br clear="none">That would be fun.<br clear="none"><br clear="none">Cheers<br clear="none"><br clear="none">/Joe<br clear="none"><br clear="none"><br clear="none">><br clear="none">> [1] <a shape="rect" href="http://lamport.azurewebsites.net/tla/tla.html" target="_blank">http://lamport.azurewebsites.net/tla/tla.html</a><br clear="none">> _______________________________________________<br clear="none">> erlang-questions mailing list<br clear="none">> <a shape="rect" ymailto="mailto:erlang-questions@erlang.org" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br clear="none">> <a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><div class="yqt2721483561" id="yqtfd20792"><br clear="none">_______________________________________________<br clear="none">erlang-questions mailing list<br clear="none"><a shape="rect" ymailto="mailto:erlang-questions@erlang.org" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br clear="none"><a shape="rect" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br clear="none"></div></body></html></div></div>
                </div>
            </div></div></body></html>