Live data from Hacker News

Some of the error messages produced by Apple's MPW C compiler (2006)

cs.cmu.edu

21–30 of 154 posts

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#21
> "Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer"

Ah, the old times when one could purchase a RAM upgrade or upgrade RAM after buying a computer. Now this would be:

"Symbol table full - fatal heap error; please go buy a new Mac with more RAM"

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#22
post #17
post #13

My favourite syntax error message produced by the Glockenspiel C++ compiler (a cfront derived piece of junk that I used in a training company in the early 90s) was simply "core dumped". This was slightly tricky to explain to people already struggling with C++, and who had paid us money for the course.

The users could simply run a debugger to get a backtrace from the core file... then with some experience, they would learn to associate different hex addresses with different kinds of errors. No harm, no foul.

I take it that you have never worked for a training company :-)

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#23
post #16
post #8

Earlier quoted context omitted.

> The compiler is 324k in size Playfulness isn't the only thing we've lost. Software bloat has reached comedic levels.

Your optimizing compiler today will actually optimize. LLVM was recently ported to the 6502 (yes, really) [1]. An example: void outchar (char c) { c = c | 0x80; asm volatile ("jsr $fbfd\n" : : "a" (c): "a"); } void outstr (char* str) { while (*str != 0) outchar(*str++); } void main () { outstr("Hello, world!\n"); } That is compiled to this: lda #$c8 ; ASCII H | 0x80 jsr $fbfd lda #$e5 ; ASCII e | 0x80 jsr $fbfd ... U…

Does it end that code with a

  jmp $fbfd

?

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#24
post #8

Earlier quoted context omitted.

> The compiler is 324k in size Playfulness isn't the only thing we've lost. Software bloat has reached comedic levels.

The clang executable on my machine is 18kb.

On my system, where clang is statically linked, the binary is 48mb.

As in megabytes.

Nearly all of clang and LLVM are linked as libraries.

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#25
post #2

I miss this kind of playfulness in computing. When I was at Amazon my manager told me that several years earlier he was responsible for updating the 404 page so he scanned a picture of a cat his daughter drew and made that the body of the page. In 2009 when I started, that was still the image, but at some point someone must have noticed and replaced it with a stock photo of a dog. The asset was still called kayli-kit…

Go load www.amazon.com and check the source right after :)

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#26
post #23
post #16

Earlier quoted context omitted.

Your optimizing compiler today will actually optimize. LLVM was recently ported to the 6502 (yes, really) [1]. An example: void outchar (char c) { c = c | 0x80; asm volatile ("jsr $fbfd\n" : : "a" (c): "a"); } void outstr (char* str) { while (*str != 0) outchar(*str++); } void main () { outstr("Hello, world!\n"); } That is compiled to this: lda #$c8 ; ASCII H | 0x80 jsr $fbfd lda #$e5 ; ASCII e | 0x80 jsr $fbfd ... U…

Does it end that code with a jmp $fbfd ?

Doubtful, given the JSR comes from an inline asm. You’d need to code the call in C (with an appropriate calling convention, which I don’t know if this port defines) for Clang to be able to optimize a tail-position call into a jump—which it is capable of doing, generally speaking.

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#27
post #23
post #16

Earlier quoted context omitted.

Your optimizing compiler today will actually optimize. LLVM was recently ported to the 6502 (yes, really) [1]. An example: void outchar (char c) { c = c | 0x80; asm volatile ("jsr $fbfd\n" : : "a" (c): "a"); } void outstr (char* str) { while (*str != 0) outchar(*str++); } void main () { outstr("Hello, world!\n"); } That is compiled to this: lda #$c8 ; ASCII H | 0x80 jsr $fbfd lda #$e5 ; ASCII e | 0x80 jsr $fbfd ... U…

Does it end that code with a jmp $fbfd ?

No. The compiler knows that trick for its own code :) not sure about introspecting into the assembly (I think LLVM doesn't do that). But either way, standard C returns int of 0 from main on success. So: ldx #0 txa rts

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#28
post #21

> "Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer" Ah, the old times when one could purchase a RAM upgrade or upgrade RAM after buying a computer. Now this would be: "Symbol table full - fatal heap error; please go buy a new Mac with more RAM"

I understand the arguments for unified RAM on a SoC, but it’s still a shame; even the new Mac Pro doesn’t have RAM slots.

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#29
post #21

> "Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer" Ah, the old times when one could purchase a RAM upgrade or upgrade RAM after buying a computer. Now this would be: "Symbol table full - fatal heap error; please go buy a new Mac with more RAM"

I understand the arguments for unified RAM on a SoC, but it’s still a shame; even the new Mac Pro doesn’t have RAM slots.

The soldered-in SSD is worse, though. The SSD WILL wear out, so then you get to throw away your Mac?

Re: Some of the error messages produced by Apple's MPW C compiler (2006)

#30
post #21

> "Symbol table full - fatal heap error; please go buy a RAM upgrade from your local Apple dealer" Ah, the old times when one could purchase a RAM upgrade or upgrade RAM after buying a computer. Now this would be: "Symbol table full - fatal heap error; please go buy a new Mac with more RAM"

This is even more true today, because Apple Silicon Macs are able to store twice the amount of information in the same amount of memory, meaning that a paltry 8GB configuration can store 16GB of FizzBuzz boilerplate, 4 Google Chrome tabs, or 20% of the average node_modules.
Post reply on HN