On Thu, Jul 9, 2020 at 1:25 PM Brion Vibber <[email protected]> wrote: > That's an extremely neat idea, and dividing into smaller files should help > the compilation to run to completion in limited memory scenarios like > virtual machines and low-end laptops. I think this would also be required > to make use of multiple CPU cores in the C compiler; running a 6-core > machine on only one core is going to be much slower than it should be and > will result in a lot of wasted time for the user. > > It would also delay other projects' CI runs that install a fresh emsdk, > wouldn't it? By delaying work that could be done once at build time to > happen thousands of times, once at every installation? > > Yes, this is the main downside of the wasm2c approach. It's not a true replacement for a proper build. (But it can help rare platforms that have no other build.)
As a developer who uses a variety of computers to work, I personally would > appreciate the performance improvements and the energy savings of making > one build per release per platform and distributing the appropriate ones > for direct use with no additional compilation stage. > > -- brion > > On Thu, Jul 9, 2020, 1:14 PM Alon Zakai <[email protected]> wrote: > >> Yeah, that's an issue with wasm2c. It takes a few minutes to build >> (optimized) wasm-opt, and clang would be much worse, and maybe fail as you >> said. >> >> I don't think anyone's looked into this, but ideas include: >> >> * Get wasm2c to emit separate files, each containing one or more >> functions. Then you just need a Makefile or such and can even build in >> parallel. >> >> * Write a little python script that splits up the file automatically. The >> format is pretty simple so that's easy. And the python could also run >> gcc/clang in a process pool for you. >> >> - Alon >> >> >> >> On Thu, Jul 9, 2020 at 1:01 PM 'Thomas Lively' via emscripten-discuss < >> [email protected]> wrote: >> >>> How does the wasm2c build work with something as large as LLVM? I would >>> assume that at some point the C file would get so large that the C compiler >>> would fall over. >>> >>> On Thu, Jul 9, 2020 at 12:58 PM Alon Zakai <[email protected]> wrote: >>> >>>> At the risk of sounding like a broken record - I've been talking about >>>> the next idea a lot recently ;) - I think this is something wasm2c can help >>>> with. I just gave a talk about how: >>>> >>>> http://kripken.github.io/talks/2020/universal.html#/ >>>> >>>> The idea is that we add a single additional build target, "universal >>>> C", which compiles LLVM and Binaryen to portable C code that can then be >>>> compiled on practically any platform. So this new "build" would be C, and >>>> people would download those C files and run a simple command to build them >>>> locally. After the local build you end up with a normal executable that >>>> just works. >>>> >>>> There is still that build step locally, but it's the simplest build >>>> possible - no build system is needed, no special local setup, no cmake or >>>> configure, just run gcc or clang on a self-contained C file. That should be >>>> trivial on ARM64 MacOS or Linux as I believe they have a system C compiler >>>> installed by default. >>>> >>>> I'm not opposed to adding "proper" ARM64 builds, though - ARM64 builds >>>> would have some benefits over wasm2c. But wasm2c builds do cover the long >>>> tail of less-common platforms, and we can probably set them up much quicker >>>> too. I hope to do this for Binaryen soon anyhow. >>>> >>>> - Alon >>>> >>>> On Thu, Jul 9, 2020 at 11:30 AM Brion Vibber <[email protected]> wrote: >>>> >>>>> I've been a bit of an ARM64 enthusiast of late, trying out Linux, >>>>> Windows 10, and iOS devices that run on the ARM64/Aarch64 family of >>>>> processors. Emscripten works fine on these machines if one cares to do >>>>> some >>>>> light development work on them, but since there's no binaries built from >>>>> CI, the standard emsdk can only install by building from source -- which >>>>> can take hours on a middleweight portable machine. >>>>> >>>>> Now that Apple is switching their Mac product line to ARM64 processors >>>>> over the next two years, it will likely become much more common next year >>>>> for people to have ARM64-based laptop and desktop computers, and some of >>>>> them will need to build something with emscripten in their workflows >>>>> either >>>>> on macOS or on a virtualized Linux in Docker etc. >>>>> >>>>> From what I've seen presented at WWDC, the ARM64 Macs will support >>>>> emulated processes, so it may work to ship the x86_64 binaries with the >>>>> caveat that they will run much slower than native builds. >>>>> >>>>> Virtualized Linux builds would also need native ARM64 binaries to run, >>>>> or else they'd have to sit there for a couple hours compiling after every >>>>> upgrade. >>>>> >>>>> And of course there are already Windows 10 and Linux computers >>>>> available with ARM64 processes, on sale since a couple years ago and used >>>>> in the wild in modest numbers. >>>>> >>>>> I get the impression that the biggest roadblock to explicit ARM64 >>>>> support in emscripten is getting it into the CI infrastructure: >>>>> * Linux/ARM64 builds and testing? >>>>> * macOS/ARM64 builds and testing? >>>>> * Windows/ARM64 builds and testing? >>>>> >>>>> It's too soon to start on macOS since it's in beta, dev kits aren't >>>>> shipped yet, and there's no obvious way yet to figure out how to run tests >>>>> on a macOS ARM system in CI. :) >>>>> >>>>> And I'm less sure how important Win/ARM64 is, given you can use the >>>>> Linux/ARM64 version in WSL virtualization. But some folks prefer to >>>>> develop >>>>> on native Windows, too. >>>>> >>>>> If there's any way we can start talking about Linux/ARM64 builds and >>>>> testing, I would be very happy about it! I would even kick in a few bucks >>>>> for a VM or something if that would help any. ;) >>>>> >>>>> Thanks for your time and your consideration! >>>>> >>>>> -- brion vibber (brion @ pobox.com / brion @ wikimedia.org) >>>>> Wikimedia Foundation >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "emscripten-discuss" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/emscripten-discuss/CAFnWYT%3D3OLskq1KBtVrgKsq1PTS7eHDxyzpcBpmE8_Bfk7m6Kw%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/emscripten-discuss/CAFnWYT%3D3OLskq1KBtVrgKsq1PTS7eHDxyzpcBpmE8_Bfk7m6Kw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "emscripten-discuss" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQoi1LZiw2dPjeMMy2zSf-Z8WFWjpP8K1C-gEx67O5jwg%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQoi1LZiw2dPjeMMy2zSf-Z8WFWjpP8K1C-gEx67O5jwg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "emscripten-discuss" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/emscripten-discuss/CAJZD_EVjH_yPoWO3YC3NdjQOPx9xJbBh-kfbiB6xiVXcK378Mw%40mail.gmail.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/CAJZD_EVjH_yPoWO3YC3NdjQOPx9xJbBh-kfbiB6xiVXcK378Mw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQwE%2BVA682EdL0ozCeQc-S%2B5Ko%3DnQ0NVvMgfz1Y%2Bgf9aw%40mail.gmail.com >> <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQwE%2BVA682EdL0ozCeQc-S%2B5Ko%3DnQ0NVvMgfz1Y%2Bgf9aw%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/CAFnWYTnh%2BqW8_fM5CBGa5oPrqtQS%3DyX9TaK7oWPTNUTwBcZmyA%40mail.gmail.com > <https://groups.google.com/d/msgid/emscripten-discuss/CAFnWYTnh%2BqW8_fM5CBGa5oPrqtQS%3DyX9TaK7oWPTNUTwBcZmyA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpSTdJ_H%3DkGm_eA%2BGvY%3D3azuffdQ5RS7cjOcAjxF_c3Yhg%40mail.gmail.com.
