Comment by csdvrx

3 years ago

> there's plenty of HTTP servers on CPAN. I'm not sure which one's are best.

Same. I know about HTTP::Daemon, HTTP::Tiny and HTTP::Server::Simple

If you have tried one of the 3 and can confirm it works with APPerl, it might save time?

If not, first with HTTP::Daemon (since it shows how to bind to a given IP in https://gist.github.com/mikkun/6388508, unlike HTTP::Tiny) I will try to release something similar to redbean but based on perl and DBD::SQLite

> When bundled into APPerl, the script can read the files embedded in APPerl from the /zip path.

That much I knew, but I was afraid there might be extra things needed

> MHFS's APPerl packaging config: https://github.com/G4Vi/MHFS/blob/master/apperl/apperl-proje...

Thank you! Then I might go with MHFS at first (tweaking its index.pl), if only because it's been tested by you with APPerl :)

> HTTP::Daemon, HTTP::Tiny and HTTP::Server::Simple

I haven't tested any. Pure Perl servers should be the easiest to get working. The Cosmopolitan Libc doesn't support fcntl F_SETFL O_NONBLOCK on Windows yet, and so non-blocking / event loop servers may be a no-go for now.

> I will try to release something similar to redbean but based on perl and DBD::SQLite

I'd like to see this.

> Then I might go with MHFS at first

I wouldn't consider MHFS's HTTP server "production ready" and suffers from the above mentioned O_NONBLOCK issue, but I'm curious how it would go.

If you haven't already, feel free to join the Redbean/Cosmopolitan Libc discord to discuss. (There's a link on the APPerl webpage).

  • FYI, building on windows make it detect Trojan:Win32/Wacatac.H!ml

    I used your perl.com as an input. Fake positive? Or have you been infected?

    Also, even if I cpan install the modules and have:

             "perl_repo_files" : {"cpan" : [
                "HTML-Template",
                "URI",
                "Class-Inspector",
                "HTTP-Daemon",
                "HTTP-Status",
                "IPC-Open2"
             }
    

    I get:

    C:\test> .\test.com Can't locate HTTP/Daemon.pm in @INC (you may need to install the HTTP::Daemon module) (@INC contains: . /zip/lib/perl5/site_perl/5.36.0/x86_64-cosmo /zip/lib/perl5/site_perl/5.36.0 /zip/lib/perl5/5.36.0/x86_64-cosmo /zip/lib/perl5/5.36.0) at /zip/bin/test line 9. BEGIN failed--compilation aborted at /zip/bin/test line 9.

    Do I need to use https://github.com/G4Vi/MHFS/blob/master/apperl/download_pac... or something else to put the dependencies pm files in the zip?

    • It's mostly likely a false positive, but you're welcome to build from source with apperlm. The polygot binary format including the compressed ZIP archive probably sets off the scanners. The official APPerl binaries are compiled and uploaded by Github Actions: https://github.com/G4Vi/Perl-Dist-APPerl/blob/master/.github...

      apperlm does not download perl module dependencies right now, but download_package.pl can be used to download dependencies. apperlm mostly just acts as a glorified front-end to Info-ZIP when doing a build of a "nobuild" config (building off of existing apperl)

      download_package.pl example https://github.com/G4Vi/MHFS/blob/6db6ad24886ca0ea335a050228...

      Edit: You can see what files were packed into it by renaming with .zip extension and opening with Windows Explorer.

      Edit 2: "perl_repo_files" just specifies where to copy files to inside of the perl source tree. It is only used if you are building APPerl from source (it is unused if you are building a "nobuild" config). IPC-Open2 should already be bundled in the full perl.com as it's included in the perl5 repo: https://github.com/G4Vi/perl5/tree/cosmo-apperl/ext/IPC-Open...

      1 reply →