Live data from Hacker News

GHC now runs in the browser

discourse.haskell.org

101–110 of 131 posts

Re: GHC now runs in the browser

#101

Earlier quoted context omitted.

Between old Hugs and the new MicroHs, I think it's definitely doable with some elbow grease. I just don't know if anyone in the community cares that much about bootstrapping tho.

AIUI, the underlying problem is that both Hugs and whatever toy Haskell implementations are available don't support the extensions current versions of GHC require. And no one has done the work to carve out a minimal stage0 compiler out of the GHC codebase that doesn't need those extensions to be built.

So the problem is we want to use a different language to Haskell. GHC Haskell.

Re: GHC now runs in the browser

#102
post #97
post #66

Earlier quoted context omitted.

Outside some fairly niche projects working on the problem, this is not a priority and most systems have straight binary dependencies.

The normalized lack of care about supply chain integrity is going pretty poorly, as any read of recent headlines indicates. Stagex has a 100% full source bootstrapping, and reproducibility requirement that at least two maintainers must prove and sign for every package. Stagex is also very heavily used and relied on in high value financial and scientific applications where trusting a binary some internet rando compile…

I'm not saying the status quo is good, but it is nontheless the status quo. Just about every machine on the cloud, mobile devices, etc all have non-source binaries somewhere, and besides some niche projects that actually have an assembly half-C compiler bootstrapping another tiny C compiler bootstrapping a real C compiler, this is not feasible for the vast software ecosystem as of today.

Re: GHC now runs in the browser

#104
post #102
post #97

Earlier quoted context omitted.

The normalized lack of care about supply chain integrity is going pretty poorly, as any read of recent headlines indicates. Stagex has a 100% full source bootstrapping, and reproducibility requirement that at least two maintainers must prove and sign for every package. Stagex is also very heavily used and relied on in high value financial and scientific applications where trusting a binary some internet rando compile…

I'm not saying the status quo is good, but it is nontheless the status quo. Just about every machine on the cloud, mobile devices, etc all have non-source binaries somewhere, and besides some niche projects that actually have an assembly half-C compiler bootstrapping another tiny C compiler bootstrapping a real C compiler, this is not feasible for the vast software ecosystem as of today.

Most mainstream languages have a fairly straightforward bootstrapping process that doesn't rely on a trusted binary. And yes, most distrubutions ignore that, but nonetheless it is possible to use those languages in a high-sec environment if you put the work in.

I'm not sure that I agree that GHC can't be bootstrapped though. There is a process for porting to other architectures; its not an automated process and perhaps no one outside the GHC team can actually do it, but if for some insane reason NSA decided they want to use Haskell I'm not sure that they actually can't, if they put a lot of work in and hire GHC committers with high security clearances.

Re: GHC now runs in the browser

#105
post #49

Earlier quoted context omitted.

https://discourse.haskell.org/t/what-s-needed-to-bootstrap-g... people have worked replaying the history to bootstrap.

Looks like a work in progress still, but exciting someone at least put some time into this in the past year. Maybe some day I can have pandoc in security focused linux distributions...

This is the same process used to port GHC to new architectures, like ARM. It is not easy to do, I don't know how many people can actually do it. But its possible and has been done multiple times.

Re: GHC now runs in the browser

#106
post #102
post #97

Earlier quoted context omitted.

The normalized lack of care about supply chain integrity is going pretty poorly, as any read of recent headlines indicates. Stagex has a 100% full source bootstrapping, and reproducibility requirement that at least two maintainers must prove and sign for every package. Stagex is also very heavily used and relied on in high value financial and scientific applications where trusting a binary some internet rando compile…

I'm not saying the status quo is good, but it is nontheless the status quo. Just about every machine on the cloud, mobile devices, etc all have non-source binaries somewhere, and besides some niche projects that actually have an assembly half-C compiler bootstrapping another tiny C compiler bootstrapping a real C compiler, this is not feasible for the vast software ecosystem as of today.

Stagex can already support all of those use cases provided they are not written in Haskell or Ada, and in fact Stagex is already used heavily in production. We bootstrap everything deterministically from 180 bytes of human auditable x86 machine code.

Rust, Go, Nodejs, we have you covered with complete full source bootstrapping and multi-party signed reproductions.

There is no good excuse for poor supply chain integrity anymore.

Re: GHC now runs in the browser

#107
post #93
post #55

Earlier quoted context omitted.

Interesting logic: Declare something "dead" because it does not fulfill [extremely niche usecase that currently only few people care about] (boostrapped builds) and thus couldn't "even" be included in [project of the post author that takes a while to even find] (I eventually figured it must be referring to https://stagex.tools ). There are probably 100x more people interested in Haskell than in build-bootstrapping (t…

I said it has to be treated as a dead language. I did not say it actually is one. Being able to compile a compiler without binary blobs is a hard prerequisite to using that language for any application where security matters. A language can have an active community and still be unsuitable for any real world use cases. Fortran is bootstrappable so I consider it more viable than haskell for real world use, even though…

> If it becomes bootstrappable, then of course all the above critique is immediately retracted.

So basically you're saying you're just trying to get people to carry water for your project?

> because there is still literally no way to compile it from source

https://gitlab.haskell.org/ghc/ghc/-/wikis/building/#buildin...

I cannot comprehend how you can get to the conclusion that a compiler that was litterally made so that people could hack into it and learn from that has no build documentation.

Re: GHC now runs in the browser

#108
post #102

Earlier quoted context omitted.

I'm not saying the status quo is good, but it is nontheless the status quo. Just about every machine on the cloud, mobile devices, etc all have non-source binaries somewhere, and besides some niche projects that actually have an assembly half-C compiler bootstrapping another tiny C compiler bootstrapping a real C compiler, this is not feasible for the vast software ecosystem as of today.

Most mainstream languages have a fairly straightforward bootstrapping process that doesn't rely on a trusted binary. And yes, most distrubutions ignore that, but nonetheless it is possible to use those languages in a high-sec environment if you put the work in. I'm not sure that I agree that GHC can't be bootstrapped though. There is a process for porting to other architectures; its not an automated process and perha…

GHC absolutely could be bootstrapped, but someone versed in that ecosystem would have to put in a lot of work to do it.

If they ever do, my team and I will put in the work to package and maintain it in stagex.

Re: GHC now runs in the browser

#109
post #37

Unfortunately there is still no way to actually bootstrap haskell (or anything based on it) which makes it impossible to put anything written in Haskell near any high trust linux distribution or environment. I guess sandboxing the untrusted binary in a browser is -something- to let people play with haskell in a lower risk way for the moment at least but it is hard to take a language seriously or trust it with no way…

You're speaking of "GHC haskell" there. Yes that is the main stream - and this will get solved there sooner or later - but you can also do a fair amount of Haskell without GHC. Eg MicroHs is getting increasingly capable and I believe is highly bootstrappable.

TIL MicroHS. Might try packaging this soon if it is in fact bootstrappable and can be deterministically compiled.

Re: GHC now runs in the browser

#110
post #107
post #93

Earlier quoted context omitted.

I said it has to be treated as a dead language. I did not say it actually is one. Being able to compile a compiler without binary blobs is a hard prerequisite to using that language for any application where security matters. A language can have an active community and still be unsuitable for any real world use cases. Fortran is bootstrappable so I consider it more viable than haskell for real world use, even though…

> If it becomes bootstrappable, then of course all the above critique is immediately retracted. So basically you're saying you're just trying to get people to carry water for your project? > because there is still literally no way to compile it from source https://gitlab.haskell.org/ghc/ghc/-/wikis/building/#buildin... I cannot comprehend how you can get to the conclusion that a compiler that was litterally made so t…

My project has no need of Haskell, but if anyone puts in the work to make haskell compileable from only public source code my team and I will put in the work to reproduce, package, and maintain it for the community for free as we do most other languages.

Your link details building GHC with an existing non reproducible GHC compiler binary compiled by a single individual that must be blindly trusted.

Full source bootstrapping means no binary blobs or trust in anyone else needed, which makes supply chain integrity possible. This is a bare minimum for any language to be considered for production use in any environment where security matters.

To me it -is- crazy when a major language compiler skips something so basic, but Haskell did.

To be fair rust team skipped this too, but thankfully rust is popular enough that a community member cared enough about high security applications to write mrustc, a bootstrap rust compiler written in C++. If not for that Rust would be in the same boat as Haskell.

Meanwhile Go and Zig did it right, and have both provided full source bootstrapping instructions from a C compiler since day 1.

Post reply on HN