ohai.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
A cozy, fast and secure Mastodon server where everyone is welcome. Run by the folks at ohai.is.

Administered by:

Server stats:

1.9K
active users

What's Ruby?

An interpreted, multi-paradigm, high-level, general-purpose programming language. You need Rust to build it.

What's Rust?

A compiled, multi-paradigm, high-level, general-purpose programming language. You need Python to build it.

What's Python?

An interpreted, multi-paradigm, high-level, general-purpose programming language.

Do I need, uhm, Perl to build it?

No, but you need Perl to build Rust.

I knew it. What's Perl?

An interpreted, multi-paradigm, high-level, general-

@jschauma FFS when can folks stop making these gratuitous compounding build/bootstrapping dependencies? Ruby needing Rust is probably reasonable. Rust needing Python and Perl is nothing but laziness and cost externalization.

@dalias @jschauma I'd like if it were more common to bootstrap compilers & interpreters and make some basic frontend in GCC to shortcircuit that.

So you get the GCC bootstrap & then instantly can move on to anything.

guix.gnu.org/en/blog/tags/boot

guix.gnu.orgPage 1 — Bootstrapping — Blog — GNU GuixBlog posts about Bootstrapping on GNU Guix.
dr2chase

@lispi314 @dalias @jschauma I try not to over-toot the horn of whatever I happen to be working on, but this seems like a plausible job for Go. Few dependencies, easy cross-platform builds.

@dr2chase @jschauma Yeah, GCCGO is a thing, it isn't up to the current versions but contributions could change that.

@lispi314 @dr2chase @jschauma why do you want GCC in there? What advantage does it bring outside the main toolchain?

@cbehopkins @dr2chase @jschauma It's the main compiler involved in the only reduced binary bootstrap seed project (guix.gnu.org/en/blog/2020/guix) I'm aware of.

As for Golang specifically, it weakens the Google domination, which I find valuable in itself.

Of course, making an interpreter instead of a GCC frontend & using that to compile a self-hosting compiler works too (you still need to compile that interpreter too at some point unless you write in assembler I guess, then you assemble it).

guix.gnu.orgGuix Further Reduces Bootstrap Seed to 25% — 2020 — Blog — GNU GuixBlog posts about GNU Guix.

@cbehopkins @dr2chase @jschauma But then that begs the question, why make yet another compiler instead of reusing the optimization & portability work already done by others before you?

Having a compiler implemented in a safe language is a valid answer to that question, but it does mean you're willing to trade-off portability (or a lot more work to be done) in exchange for it.

@lispi314 @dr2chase @jschauma thanks, think I understand your concerns now, never had to deal with auditability of the toolchain as a concern before.

I guess I don't see c as a safe language, so in many ways, problematic (or maybe that's too many years arguing Misra rules with coworkers ;-))
Thanks

@lispi314 I'm sorry I'm missing something here with you referring to an interpreter in the context of GCC and Go.
If I understand you correctly, the interest is to bootstrap from the minimal possible outside dependencies. (Rather than the ability to bring up the toolchain in a cross platform situation with minimal complications?)
I guess the concern for me in bootstrapping is simplicity, not code size.

@cbehopkins Unauditable code-size, more specifically.

Golang requires Golang to build.

Currently that means that Guix, in order to not accept arbitrary binary blobs from Google to build Golang, has to start from Golang 1.4 & iteratively build each following one up to the current version.

A Golang interpreter or sufficent GCC frontend (like GCCGO is intended to be) would also short-circuit that chain of builds so that one could build the final Go compiler (in Golang) directly.

@cbehopkins @lispi314 @dr2chase @jschauma I'd add portability. You generally need (and already have, by the time you're porting a second language) C anyway, and GCC provides that nicely, so it's probably already there.

Go is available for fewer platforms than GCC, and seems equally difficult to port (never touched it, so IDK). If your language porting story begins with “port the Go compiler and libs first”, you're not going anywhere.