Email or username:

Password:

Forgot your password?
blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

#GCC size: 343Mb*
#Rust size: 1Gb
#GHC size: 1.4Gb
#Clang size: 1.7Gb

#Chez #Scheme size: 5mb

[ * ] all based on the results of using #guix size, removing common and documentation-based dependencies such as ncurses, bash, and zlib

17 comments
blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

my compiler is just as fast as your super strong and manly systems programming language compiler, and smaller than your compiler's documentation.

Ekaitz Zรกrraga ๐Ÿ‘น

@rml i don't know about the rest but GCC's codebase is obscenely large.
Also, something many people doesn't know, the CC in gcc means compiler COLLECTION, which means it's not just one compiler but many.

It's insane.

It's still kind of easier to read than badly written smaller projects :)

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

@ekaitz_zarraga yeah, I started diggin in when I was considering getting involved in #gccrust, but dear lord is it gnarly. I think thats where the gn- may actually originate.

Ekaitz Zรกrraga ๐Ÿ‘น

@rml I am backporting gcc 4.6 to RISCV. I managed to make it output RV binaries but there's still work to do... It was way easier than I thought it would be. But it was still difficult :)

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

@ekaitz_zarraga yeah, thats one of things, any problem you allow yourself to bang your head against and figure out how to do it right rather than just deciding on a strategy and then proceeding to conquer the problem by brute force, duck taping your way through, winds up with a clear solution. thats when the magic happens, and you then you have a rare trick up your sleeve.

my boss at my current gig has been very understanding of this, and as a result we're delivering before deadlines with maintainable code, and far less lines of it. not being expected to show constant progress is so much more productive.

@ekaitz_zarraga yeah, thats one of things, any problem you allow yourself to bang your head against and figure out how to do it right rather than just deciding on a strategy and then proceeding to conquer the problem by brute force, duck taping your way through, winds up with a clear solution. thats when the magic happens, and you then you have a rare trick up your sleeve.

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

bootstraps itself in less than a minute. produces statically linked binaries. makes up the core foundation of many of todays most innovative programming languages, and everyone who uses it has a blast. but yeah I guess working with heavy duty infrastructure that can't feasibly be forked has its merits.

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

not that chez would be particularly easy to maintain, but I already spend a good deal of free time studying the source just because its one of the coolest code bases I've ever seen (much like guix, except a totally different philosophy), and i'm eager to learn the concepts. I'll take a 70k LoC over a million+ any day.

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

did you ever wish you had the freedom to walk through every continuation involved in a function call as its transformed into various intermediate representations, with such fidelity that can you inspect the internals of any character in the process, and even mutate them and continue to run the program from a specific stack frame, dynamically at the repl? its very minimal and takes some learning to be effective with, but if that degree of introspection is your thing, what you want is #chez

just make sure to take the time to learn scheme pattern matching, which makes the language like quantum glue, and then I think you won't be so bothered by its lack of "features"

did you ever wish you had the freedom to walk through every continuation involved in a function call as its transformed into various intermediate representations, with such fidelity that can you inspect the internals of any character in the process, and even mutate them and continue to run the program from a specific stack frame, dynamically at the repl? its very minimal and takes some learning to be effective with, but if that degree of introspection is your thing, what you want is #chez

Panicz Maciej Godek

@rml yes but will you make a series of blog posts out of it

Niclas Hedhman

@rml

I am currently using Mecrisp Forth on a STM32WLE5 (64kB RAM, 256kB Flash) target.

Compiler (to machine code) built-in and running on target, has a disassembler on target. REPL-over-serialport on target. All in ~40-50kB of the Flash. FreeRTOS + LoraWAN stack in C occupies ~130-140kB of Flash.

Back in the days; GEM was a Windowing system running in 1MB RAM computers. Nowadays, few websites are less than 10x that.

Are we doomed?

Sky UwU

@rml How are other Schemes in size?

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

@donkeyblam chez is the smallest of all the major implementations I believe. Chibi, the simplest to embed in application, while also fully featured with the largest SRFI set of any other except maybe gauche is about 25mb. Gauche is a fully featured implementation that is probably the closest to a full implementation of #r7rs-large (red) aimed at extending other applications and is ~85mb. gambit, the second fastest, is ~140mb. Guile is very fast (performance has never been a hangup in my extensive experience) and probably boasts the most extensive tooling beyond racket, and is ~80mb. Guile also ships with libguile, a simple interpreter written in C that is just a few mb and dead simple to embed in applications, but its features are quite limited.

And then #loko, the new kid on the block that is climbing the #scheme benchmarks at breakneck speed and I believe currently tailing racket after gambit and chez, which is also a microkernel operating system with #ConcurrentML style multicore based on Guile's fibers, as well as its own #wayland-style WIP compositor ("valand"), is a mere 9mb, with no dependencies whatsoever. It bootstraps from sprinkles of hand written assembly, which makes up a mere %0.2 of the code in the repository. Extremely impressive project. The author also makes the #akku scheme package manager, which is starting to make cross-implementation compatibility possible among r6/r7rs implementations.

@donkeyblam chez is the smallest of all the major implementations I believe. Chibi, the simplest to embed in application, while also fully featured with the largest SRFI set of any other except maybe gauche is about 25mb. Gauche is a fully featured implementation that is probably the closest to a full implementation of #r7rs-large (red) aimed at extending other applications and is ~85mb. gambit, the second fastest, is ~140mb. Guile is very fast (performance has never been a hangup in my extensive...

blake shaw ๐Ÿ‡ต๐Ÿ‡ธ

@donkeyblam @donkeyblam oh snap I forgot Chicken, which is probably the best for systems programming and is an impressive14mb

Andy Gocke

@rml I don't see the point of this comparison. Those compilers aren't interchangeable

Go Up