Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Re: Re: Re: Re: The Perl Compiler (turning perl scripts into binary executables)

by BrentDax (Hermit)
on Jul 10, 2001 at 23:50 UTC ( [id://95448]=note: print w/replies, xml ) Need Help??


in reply to Re: Re: Re: Re: The Perl Compiler (turning perl scripts into binary executables)
in thread The Perl Compiler (turning perl scripts into binary executables)

I imagine you could put a switch on the compiler call that says "I'm not doing evals or dos or requires, so you can leave out the Perl source compiler."

=cut
--Brent Dax

@HPAJ=split("", "rekcaH lreP rentonA tsuJ"); print reverse @HPAJ; #sucky but who cares?

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: Re: The Perl Compiler (turning perl scripts into binary executables)
by John M. Dlugosz (Monsignor) on Jul 11, 2001 at 01:24 UTC
    I don't see why we need to leave anything out at all. Compiled Perl programs would require the Perl DLL. But since Visual Basic has done that all along, big deal.

    Meanwhile, if you really really want a (small) single exe file solution, I can suppose that (a) you specify what you want to include or leave out, and get an error if you violate that; or (b) the compiler knows what you used or didn't, and leaves things out at link-time automatically. If nothing in the program called eval(), for example, eval() doesn't get pulled in by the linker. (If you do include eval, you might as well pull in everything, so don't worry about the lack of static analysis).

      That doesn't mean we *want* to copy VB. Personally, I hate having to haul around a runtime with my (few) VB programs.

      evals are the reason I want you to *tell* the compiler if you're using something. One of the things I really don't want to do is outsmart the programmer. We should have switches to exclude certain functionality that already exists in the Perl core for size reasons. (For the purposes of this article, I'm using a --no=feature switch.) Perhaps we can have it say, "WARNING:  You don't seem to be using regular expressions.  Support for them can be excluded with the --no=re flag.  (This warning can be disabled with the --notips flag.)" (Or whatever.)

      To pull that off, someone needs to wade through the core and find all the entry functions for regexen--then we just make those die on entry and delete the other regex functions. Unless someone already knows this--anybody?

      =cut
      --Brent Dax

      @HPAJ=split("", "rekcaH lreP rentonA tsuJ"); print reverse @HPAJ; #sucky but who cares?
        I've read that Larry wants to move more stuff out of the core in Perl 6. He mentioned format.

        Regular expressions are rather central. But maybe you're not using all the exotic features such as zero-width lookahead assertions. Maybe another choice could be a simpler regex module that's substantially smaller but is enough for ordinary grepping and handling your switch statements.

        We also need choices as to static linking vs. loadable runtime libraries. You might prefer a self-contained EXE, but I want 10 little EXE's sharing one runtime library. Depends on the intended use, too.

        —John

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://95448]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2024-03-28 23:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found