LC compilation
Mike Kerner
MikeKerner at roadrunner.com
Mon Apr 29 10:18:16 EDT 2024
any compiler chatter?
asking for an interested party
On Mon, May 29, 2023 at 7:26 PM Mark Smith via use-livecode <
use-livecode at lists.runrev.com> wrote:
> Hi Mike, sorry I thought it would have been copied with the reply. The
> original post from Skip Kimpel was more or less asking if LC is compiled.
> The exact post was…
>
> "Wait… what? I have been away from this list for a while, LC is
> not currently compilable??
>
> SKIP”
>
> I do have a question based on your reply. You indicate LC doesn’t compile
> but then go on to list all of the stuff it compiles into a standalone
> application (most of which, such as the LC engine, extensions, libraries,
> etc) are just (I would argue) libraries when it builds an application.
> Taking the definition of compiler as “a process to convert (a program) into
> a machine-code <
> https://www.google.co.uk/search?client=safari&channel=mac_bm&q=machine-code&si=AMnBZoFOMBUphduq9VwZxsuReC7YV6BL3UJP9cGsG2J_mNMPwgWXqX8HuVPC8gyFB81-plMkPkEzmbteRge93xxj5qVwJdYjXSPc2zeY_vz8RKYr_9tAP6Q%3D&expnd=1>
> or a lower-level <
> https://www.google.co.uk/search?client=safari&channel=mac_bm&q=lower-level&si=AMnBZoG9fGMZkoPgk-g4eVoaZFdERA6BgFgTvewAwu3qykvLOcqyjsbvyNVL0k7ItNaeg3uetPXhm4wenDJM9iNdxIwXbgNT_MfjGFunU2ur_NpUowaHa-E%3D&expnd=1>
> form in which the program can be executed.” I would argue it “sort of” does
> that in that the included scripts (as I understand it) are not in their
> original editable form but have been converted into something that is more
> easily interpreted by the engine. I know it’s not ML, nor is it bytecode,
> but it’s one step removed from the actually editable text in the script
> editor. Would’t you agree?
>
> The true advantage of the byte code, I believe, is that it brings LC in
> line with other similar compilers and therefore allows a more sophisticated
> (and standardised) approach to code optimisation. Or at least that will be
> one of the advantages. Obfuscation of code, as you mention, is another
> (although I have never personally worried about anyone wanting to steal my
> code 😊).
>
> Mark
>
>
> > On 29 May 2023, at 5:56 pm, Mike Kerner via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >
> > I don't see the original post, so I can only part-comment on this.
> > LC doesn't compile, per se. It builds standalone apps for all
> > platforms, but those apps include the LC engine, extensions,
> > libraries, and your stack(s). There is an obfuscator, but, no, no
> > bytecode or ML, yet. The apps behave as you would expect a standalone
> > app to behave, but, with a disassembler, you will have an easier time
> > with them than you would with a ML or BC compiled app.
> > The good news is that the current architecture makes remote debugging
> > from mobes much simpler, and, whether you are on a desktop or mobile
> > platform, you can include functionality such as side-loading and
> > real-time code execution trivially.
> > For example, let's say you have a debug build. If you include a button
> > in your debug build, with the following script, you can prompt for a
> > command, and execute it, live, in your standalone:
> >
> > on mouseUp
> > global gDo
> > ask "Do what?" with gDo
> > if it is not empty then
> > put it into gDo
> > do gDo
> > end if
> > end mouseUp
> >
> > The above script will also, as I am sure you deduced, store the last
> > command you typed, and prompt you with it, the next time you press the
> > button.
> > This is, of course, especially useful if you want to invoke the
> > debugger and then debug some routine. You can do that like by clicking
> > the button I just described, and then typing into the dialog:
> > breakpoint;send "mouseUp" to button "someButton" # steps you through
> > the debug button script, then to the mouseUp handler of "someButton"
> >
> > We are all patiently waiting for the script compiler, which, as of
> > last conversation with Mark W., is going to be a bytecode compiler,
> > not a ML compiler.
> >
> > On Mon, May 29, 2023 at 6:27 AM Mark Smith via use-livecode
> > <use-livecode at lists.runrev.com> wrote:
> >>
> >> Hi Skip,
> >>
> >> I’m surprised no one has taken a stab at answering this. I'm certainly
> no expert on the internal workings of LC or compilers but I can take a stab
> at articulating what I think the answer is, and when I get it wrong someone
> else can jump in to correct me (I should probably know this stuff better
> anyway).
> >>
> >> So if I am correct, the current environment converts LC script into
> some sort of (possibly binary) tree structure that is better organised to
> be executed by the LC engine. The engine is a big chunk of what I think is
> mostly Obj C (or some relative thereof) code that interprets the tree
> structures created in the first phase. So I guess that makes it sort of
> compiled? Compiled to execute in/on the LC engine, but also interpreted
> because the tree code is not executed on the target platform directly but
> is interpreted by the engine to generate the final executable result.
> >>
> >> As far as the script compiler project is concerned, I believe the goal
> is to create a byte code stream that can be interpreted more efficiently by
> (a possibly new?) engine. Not sure about the new engine part, but the idea
> is the tree structure thing goes away and in its place is a linear stream
> of byte codes that can both be executed more effiencetly but also optimised
> more fully. This particular byte stream (and here I’m going way outside my
> wheelhouse) is similar to what other compilers like Java, Python, (Pascal?
> — which I do know was a byte code compiled run time interpreted language…
> although companies like Borland eventually wrote Pascal compilers that
> executed directly on the target platform without any interpretation)
> produce. So, it would bring the LC compiled code more in line with what
> other compilers are producing which means post compilation the code could
> be optimised more completely using well developed industry standard
> approaches. And so everything ends up a little smaller and faster but it
> also opens the door to doing other things with the script code down the
> road.
> >>
> >> Well, that's my take on Mark Waddinghams’ most recent seminar on this
> topic. But he assuredly can fill you in much better than I can.
> >>
> >> Cheers,
> >> Mark
> >>
> >>
> >>
> >>> On 28 May 2023, at 3:54 pm, Skip Kimpel via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>>
> >>> Wait… what? I have been away from this list for a while, LC is not
> currently compilable??
> >>>
> >>> SKIP
> >>>
> >>>> On May 27, 2023, at 4:39 PM, harrison--- via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>>>
> >>>> Hi Skip,
> >>>>
> >>>> Doubtful. I would wait until after we have a compilable version of
> LC and then it will be more possible.
> >>>>
> >>>> Rick
> >>>>
> >>>>> On May 27, 2023, at 12:26 PM, Skip Kimpel via use-livecode <
> use-livecode at lists.runrev.com> wrote:
> >>>>>
> >>>>> Has anybody done anything with LC and AR?
> >>>>>
> >>>>> Curious minds want to know :)
> >>>>>
> >>>>> SKIP
> >>>>
> >>>> _______________________________________________
> >>>> use-livecode mailing list
> >>>> use-livecode at lists.runrev.com
> >>>> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >>>> http://lists.runrev.com/mailman/listinfo/use-livecode
> >>>
> >>> _______________________________________________
> >>> use-livecode mailing list
> >>> use-livecode at lists.runrev.com
> >>> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >>> http://lists.runrev.com/mailman/listinfo/use-livecode
> >>
> >>
> >> _______________________________________________
> >> use-livecode mailing list
> >> use-livecode at lists.runrev.com
> >> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> >> http://lists.runrev.com/mailman/listinfo/use-livecode
> >
> >
> >
> > --
> > On the first day, God created the heavens and the Earth
> > On the second day, God created the oceans.
> > On the third day, God put the animals on hold for a few hours,
> > and did a little diving.
> > And God said, "This is good."
> >
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> > http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
--
On the first day, God created the heavens and the Earth
On the second day, God created the oceans.
On the third day, God put the animals on hold for a few hours,
and did a little diving.
And God said, "This is good."
More information about the use-livecode
mailing list