Hacker News new | ask | show | jobs
by shakna 3008 days ago
Sure! I've now run as a team leader on six midsize-to-enormous projects that involved Scheme in their stack.

I've used:

1. Chicken Scheme for development, Gambit-C for release.

2. Custom baremetal Scheme based around the design of PreScheme and Microscheme. Implemented using Gambit-C and some of it's unique features. They had 8,16, and 32bit variants for half a dozen chip makers. (100% proprietary, and any real details covered by an NDA).

3. Racket for development, Chez Scheme for release.

Racket isn't quite Scheme, but it's IDE makes development so much friendlier, that I'll jump at the chance to use it. However, an amazing compiler is needed for release, at least to meet the standards I tend to need to aim for.

2 comments

It amazes me that different compilers can be used for dev vs release, especially Racket. That would be like using clang in development and gcc in production! I'm assuming you used the R6RS language in Racket for compatibility?
> That would be like using clang in development and gcc in production!

... I've done that too.

It's not a blind 'compile & release', but some compilers optimise better, others are faster. Wildly differing behavior is very, very rare in my experience.

Tradeoff being you have a more limited language subset, and may need to adopt only one compiler in the future.

> I'm assuming you used the R6RS language in Racket for compatibility?

Sometimes, more often r5rs, as that's what Gambit-C aims for.

what's the reason for using different compiler for dev and release?
A compiler that heavily optimises, like Gambit, might take a minute or two on a large project, whereas Chicken might take a couple seconds.

The fewer interruptions to a programmer's flow, the better.

However, on release, performance, and binary size, often matter, so go with the best.