Another interesting question is whether the GCJ implementation can handle non-Java bytecode. Imagine being able to write Java, Scheme, or Python source, distribute it as bytecode, and, if the end-user wants native binaries, they just run it through GCJ. JVM + GCJ has a lot of potential to be very formidable against.NET.
Yes, GCJ can handle non-Java bytecode. If Kawa
is configures --with-gcj it will use GCJ to compile itself, including bytecode generated from Scheme. The result is a shared library made from source code in Java amd Scheme. It will also create a script that makes it easy to compile
Scheme or XQuery to native executable.
Why did this get moderated to 5?
It's nothing more than a polemic filled with vague and misleading half-truths.
they keep changing the way they do C++ name mangling... and keep changing the API for their "standard" C++ library If the ABI is incompatible, having name mangling be incompatible is a feature, not a bug.
I don't believe the ABI changed from 3.0 to 3.1, and the changes from 3.1 to 3.2 are minor, unforeseen, unfortunate, but needed bug-fixes.
Once the ISO Standard for C++ was released a few years ago, the g++ ABI should have been finalized and set in stone.
And where were you to help with this? The ISO Standard is very big and complex. Understanding all the implementation and ABI implications of
the standard is very difficult. I doubt there is
a single persion in the world who groks the entire
standard, all the interactions, and how to implement it all.
But since you could obviously have done a much
better job than the G++ implementors, why didn't
you volunteer?
TeX is a huge monster of a programming language/application. Knuth offered a cash prize of $(2^N) for the Nth unique bug report.
Er - I don't think so. That would get
astronomical very quickly. I don't know his exact
algorithm (I have gotten one of his checks), but
it's more like doubling for each printing
(of a book) or version (of a program),
not each bug.
I don't know where AirLace gets the idea that GCJ can't do runtime introspecting. It's been able to do that for a long time.
GCJ is a full-featured Java implementation, including introspection and a full JVM. The main features missing are in the GUI: The AWT implementation is not yet usable. But since Eclipse mostly uses its own SWT GUI widgets, it probably wouldn't take much to get it working with GCJ.
I think you're confusing two systems advertised by Fry's (unless they are advertising something different where you live than they are here).
The 900MHz Celeron is $349 (after rebates) and is from eMachines. It includes Windows XP.
Their $299 "Linux 1.3" machine is a 733MHz Cyrix III chip. It does not come with WIndows XP, though you can buy it as an OEM-priced add-on.
I bought the latter last week (after my server failed to come back up after a power failure). It's a nice small case, fairly quiet, though it does have a fan. I ignored their lame Linux 1.3 system, and swapped in my old disk with RH 7.2. (I had to re-install, because the old kernel was for an Athlon.)
So far it seems like a nice enough system. It is running as bothner.com. I use my laptop for development, so speed has not been a problem.
I haven't managed to get the video to show more than 1280x1024, though Xconfigurator claims the builtin AGP card has 8MiB.
TeX is nice in some ways, but I don't think it cuts it as a standard format, for both technical and political reason. The main technical reason is that it is difficult to write tools (except TeX itself) to extract information for a TeX document, plus the fact that it mixes content and presentation too much . (LaTeX helps but does not solve this problem.)
These days, I don't think there is any reasonable alternative to an XML-based format. I know of three possible Free formats:
Docbook. A standard for "documentation", but not designed as a general documentation format.
Abiword format. A horrible misuse of XML:
It represents a series of style properties in a single attribute whose value is a comma-separated list. I'm sorry but this is Wrong. You should use multiple attributes.
The OpenOffice format. I have not studied it closely, but it has a detailed, open specification, and at first glance seems well thought out by people who know what they are doing.
Why do people mark as "Informative" and a score of 4 a posting that is so obviously wrong? It does have a useful link, which is all you can say for it.
The Nolo article does not say what this poster says it does. It says that if there is no commercial use of the name except an offer to sell the domain name that may indicate bad faith - and you still have to show that registrant has no good claim on the name and that you do.
PseudonymousCoward in question 9 says:
The rate at which Kawa has been developed, to implement a near-Scheme on the JVM has been frustrating to me.
I think you're asking a lot. Kawa has over 80k lines of code (as measured by wc), almost all of it written by one person (me) not working on it full-time, and much of it re-written as I improve things. That is a lot of code. Kawa includes a full compiler and a big runtime with lots of features. I get lots of compliments.
I attribute this at least in part to the absence in the JVM of a construct equivalent to Scheme's continuations.
In principle it is not that difficult to implement continuations on the JVM. Once you have full tail-call support (which Kawa does), you can implement continuations by a source-level transformation. What has mainly held me back is the desire to do it right, by which I mainly mean efficiently, building on top of the right calling conventions, and with interoperability with "direct" code. The other thing is I have never seen continuations as all that important. It's a check-off item if you want to claim to implement Scheme, but I suspect very few people actually would be able to use them. Still for those that do, I will get around to it as soon as I can.
I have just the thing for you. It is called GCJ. It has Java syntax and the core Java libraries, it runs natively by being compiled with GCC (though a VM is also available) and CNI is a very convenient way of accessing C++ APIs.
The original questioner talked about Kaffe as "the only free JVM". This is a common misconception. Bradley in his reply mentioned GCJ, but does not make clear that GCJ does come with a fully-functional JVM, and has for some time. Many people think GCJ is only good for ahead-of-time compilation, but its goal is to be a complete Java system. (When I run Kawa, my Scheme-to-JVM compiler, under GCJ, I depend on the JVM, because when the user types in a lambda expression on the command line, it gets compiled on the fly to a new Java class.)
Re:Still the slowest compiler around?
on
GCC 3.0 Released
·
· Score: 2
I did not hear anything about a fix/implementation of the precompiled header support.
It has been discussed many times, and there are some experimental implementations.
Or is it really so difficult to correctly implement it?
It is not only difficult to correct implement it, it is also difficult to agree on what it should do. People say "precompiled headers" but what the hell does that mean? What do you compile header files into? Do you compile a single header file into some kind of "precompiled header object file" (doesn't save you that much but is easy to use) or do you use some kind of pre-project data base (saves you more but may be more difficult to use) or what?
Note also that GCC developers use Makefiles, while most commercial Windows developers use an integrated IDE. It is easier to do all kinds of performance tricks when everything is integrated in one big program that you control.
I know there are many people interested in the problem, and I believe some may actually be working on it. It just isn't that easy if you want something that isn't a kludge. My impression (un-verified) is that many of the existing compilers that support pre-compiled header files use various kludges that may be useful but not necessarily well-designed. A pre-compiled header file solution for GCC has to be something we can live with for many years.
Er, it's GCJ (GNU Compiler for the Java [TM] programming language), not GJC. (You're not supposed to call it plain "GNU Compiler for Java" because of Sun's trademark on "Java".)
We did consider the name GJC (back in '96 when the project was started), but for some reason I don't remember (I think it was trademark-related) we decided on GCJ.
I'm very glad to see GCJ in a mainstream GCC release, and hope it will finally get the attention I think it deserves.
Chris DiBona twice slams Java for being non-free, and in some ways it is. However, it is worth pointing out that there are Free and useful implementations of Java. GCC 3.0 will be out in a few days and it will be the first official GCC release with full Java support. GCJ has made tremendous strides the last half year in terms of sbility, completeness, and features. (As the original and still active author of GCJ I admit to some bias.) The most "visible" limitation is that functional GUI libraries, but then your typical introductory CS class doesn't have much need for GUI programming. I myself am using GCJ to compile Scheme to native code, and using it to write Apache modules (still very experimental).
Re:Lots of languages for JVM
on
Perl and .NET
·
· Score: 1
About the only thing missing from the list of languages that target JVM's is Perl
After saying Red Hat has a $1.9 million per quarter burn rate and At that rate, their reserves will last perhaps 20 years, you say I wouldn't go near these guys with a 10-foot pole. There doesn't seem much connection between the two statements - you've already said they are in no danger of running out of money soon.
Now C can send back a function pointer as a return type just fine, yet the consensus here is that C is not a functional language. <P> C does have function values. However, functions cannot be nested in C. If functions can be defined inside other functions <EM>and</EM> the inner function can access the variables of the outer function (using standard lexical scoping <em>and</em> those variable bindings imported from the outer functions are still valid even after the outer function has returned <em>then</em> you can encapsulate state with the function. This allows a lot of cool things - for example you can emulate objects using functions. <p> (I'm the author of <a href="http://www.gnu.org/software/kawa/">Kawa</a> the Scheme-on-JVM system that many people like for scripting Java.)
For that matter the NC agreements that stipulate that you cannot work for a competitor for X number of years after leaving the company never hold up in court either.
Perhaps, but the NC argreements that stipulate that you cannot work for a competitor for X number of months after leaving are likely to be enforceable, according to all I've read. The enforceability depends on the length of time covered, how widely the term "compete" is interpreted, what alternative employment you have, how well you've been compensated, etc. This means it's up to a judge to interprete what is reasonable.
So far, Sun's Java specs are explicitly open: you can use them to build your own compatible implementation (you just can't call it "Java"). And Sun's Java specs are detailed and quite complete.
The language spec, while good, is incomplete and outdated. There is no library spec publicly available. The two-volume (plus supplement) Java Class Libraries set from Addison-Wesley is pretty good, but they have many errors and by no means qualify as a specification: There is way insufficient information to write a compatible implementation (though they help). (I speak from experience as the former technical lead for Gcj.)
The documentation for Swing is even worse, with no real documentation out there beyond the very terse javadoc-generated api documentation. I have found one book (from O'Reilly) that goes into any detail on the Swing text classes.
I hope your point is that you misread what I wrote, since that's what you seem to be saying.
Sorry, I misread that sentence; you don't explicitly say Stallman personally wrote glibc.
However, you say "Stallman's library" (or similar words) many times. You also talk about "Stallman's improvements", when you mean "Ulrich Drepper's improvements". This is not only very misleading, but it also robs Ulrich (who is not mentioned once in your article) of his richly deserved credit.
Like several other commentators, you seem to feel my short essay should have been a better history of Unix.
No, I feel that if you are going to write a historical essay you should try a bit harder to avoid false statements or phrasing that is likely to be misunderstood. And if mistakes or misleading phrasing is pointed out, you should try to correct them.
Yes, GCJ can handle non-Java bytecode. If Kawa is configures --with-gcj it will use GCJ to compile itself, including bytecode generated from Scheme. The result is a shared library made from source code in Java amd Scheme. It will also create a script that makes it easy to compile Scheme or XQuery to native executable.
Why did this get moderated to 5? It's nothing more than a polemic filled with vague and misleading half-truths.
they keep changing the way they do C++ name mangling ... and keep changing the API for their "standard" C++ library
If the ABI is incompatible, having name mangling be incompatible is a feature, not a bug. I don't believe the ABI changed from 3.0 to 3.1, and the changes from 3.1 to 3.2 are minor, unforeseen, unfortunate, but needed bug-fixes.
Once the ISO Standard for C++ was released a few years ago, the g++ ABI should have been finalized and set in stone. And where were you to help with this? The ISO Standard is very big and complex. Understanding all the implementation and ABI implications of the standard is very difficult. I doubt there is a single persion in the world who groks the entire standard, all the interactions, and how to implement it all.
But since you could obviously have done a much better job than the G++ implementors, why didn't you volunteer?
TeX is a huge monster of a programming language/application. Knuth offered a cash prize of $(2^N) for the Nth unique bug report.
Er - I don't think so. That would get astronomical very quickly. I don't know his exact algorithm (I have gotten one of his checks), but it's more like doubling for each printing (of a book) or version (of a program), not each bug.
I don't know where AirLace gets the idea that GCJ can't do runtime introspecting. It's been able to do that for a long time.
GCJ is a full-featured Java implementation, including introspection and a full JVM. The main features missing are in the GUI: The AWT implementation is not yet usable. But since Eclipse mostly uses its own SWT GUI widgets, it probably wouldn't take much to get it working with GCJ.
I think you're confusing two systems advertised by Fry's (unless they are advertising something different where you live than they are here).
The 900MHz Celeron is $349 (after rebates) and is from eMachines. It includes Windows XP.
Their $299 "Linux 1.3" machine is a 733MHz Cyrix III chip. It does not come with WIndows XP, though you can buy it as an OEM-priced add-on.
I bought the latter last week (after my server failed to come back up after a power failure). It's a nice small case, fairly quiet, though it does have a fan. I ignored their lame Linux 1.3 system, and swapped in my old disk with RH 7.2. (I had to re-install, because the old kernel was for an Athlon.)
So far it seems like a nice enough system. It is running as bothner.com. I use my laptop for development, so speed has not been a problem. I haven't managed to get the video to show more than 1280x1024, though Xconfigurator claims the builtin AGP card has 8MiB.
TeX is nice in some ways, but I don't think it cuts it as a standard format, for both technical and political reason. The main technical reason is that it is difficult to write tools (except TeX itself) to extract information for a TeX document, plus the fact that it mixes content and presentation too much . (LaTeX helps but does not solve this problem.)
These days, I don't think there is any reasonable alternative to an XML-based format. I know of three possible Free formats:
"hello, world"
This is because a string is a self-evaluating expression.
The Nolo article does not say what this poster says it does. It says that if there is no commercial use of the name except an offer to sell the domain name that may indicate bad faith - and you still have to show that registrant has no good claim on the name and that you do.
I think you're asking a lot. Kawa has over 80k lines of code (as measured by wc), almost all of it written by one person (me) not working on it full-time, and much of it re-written as I improve things. That is a lot of code. Kawa includes a full compiler and a big runtime with lots of features. I get lots of compliments.
I attribute this at least in part to the absence in the JVM of a construct equivalent to Scheme's continuations.
In principle it is not that difficult to implement continuations on the JVM. Once you have full tail-call support (which Kawa does), you can implement continuations by a source-level transformation. What has mainly held me back is the desire to do it right, by which I mainly mean efficiently, building on top of the right calling conventions, and with interoperability with "direct" code. The other thing is I have never seen continuations as all that important. It's a check-off item if you want to claim to implement Scheme, but I suspect very few people actually would be able to use them. Still for those that do, I will get around to it as soon as I can.
You follow the links I provided. Short answer:
./foo
gcj -g -O -o foo --main=Foo Foo.java
I have just the thing for you. It is called GCJ. It has Java syntax and the core Java libraries, it runs natively by being compiled with GCC (though a VM is also available) and CNI is a very convenient way of accessing C++ APIs.
Yes. It would be nice to "port" ORP to the GCJ run-time environment. (Note that ORP is not stand-alone.)
The original questioner talked about Kaffe as "the only free JVM". This is a common misconception. Bradley in his reply mentioned GCJ, but does not make clear that GCJ does come with a fully-functional JVM, and has for some time. Many people think GCJ is only good for ahead-of-time compilation, but its goal is to be a complete Java system. (When I run Kawa, my Scheme-to-JVM compiler, under GCJ, I depend on the JVM, because when the user types in a lambda expression on the command line, it gets compiled on the fly to a new Java class.)
It has been discussed many times, and there are some experimental implementations.
Or is it really so difficult to correctly implement it?
It is not only difficult to correct implement it, it is also difficult to agree on what it should do. People say "precompiled headers" but what the hell does that mean? What do you compile header files into? Do you compile a single header file into some kind of "precompiled header object file" (doesn't save you that much but is easy to use) or do you use some kind of pre-project data base (saves you more but may be more difficult to use) or what?
Note also that GCC developers use Makefiles, while most commercial Windows developers use an integrated IDE. It is easier to do all kinds of performance tricks when everything is integrated in one big program that you control.
I know there are many people interested in the problem, and I believe some may actually be working on it. It just isn't that easy if you want something that isn't a kludge. My impression (un-verified) is that many of the existing compilers that support pre-compiled header files use various kludges that may be useful but not necessarily well-designed. A pre-compiled header file solution for GCC has to be something we can live with for many years.
We did consider the name GJC (back in '96 when the project was started), but for some reason I don't remember (I think it was trademark-related) we decided on GCJ.
I'm very glad to see GCJ in a mainstream GCC release, and hope it will finally get the attention I think it deserves.
Chris DiBona twice slams Java for being non-free, and in some ways it is. However, it is worth pointing out that there are Free and useful implementations of Java. GCC 3.0 will be out in a few days and it will be the first official GCC release with full Java support. GCJ has made tremendous strides the last half year in terms of sbility, completeness, and features. (As the original and still active author of GCJ I admit to some bias.) The most "visible" limitation is that functional GUI libraries, but then your typical introductory CS class doesn't have much need for GUI programming. I myself am using GCJ to compile Scheme to native code, and using it to write Apache modules (still very experimental).
- and Bradley Kuhn is working on compiling Perl to the JVM, using Kawa - see the Kawa mailing list archives.
Er, no that was a different novel.
Non-stop was published in the US as Starship. Hothouse came later (1962) and was published as The long afternoon of Earth in the US.
After saying Red Hat has a $1.9 million per quarter burn rate and At that rate, their reserves will last perhaps 20 years, you say I wouldn't go near these guys with a 10-foot pole. There doesn't seem much connection between the two statements - you've already said they are in no danger of running out of money soon.
Now C can send back a function pointer as a return type just fine, yet the consensus here is that C is not a functional language.
<P>
C does have function values. However, functions
cannot be nested in C. If functions can be defined inside other functions <EM>and</EM> the inner function can access the variables of the outer function (using standard lexical scoping <em>and</em> those variable bindings imported from the outer functions are still valid even after the outer function has returned <em>then</em> you can encapsulate state with the function. This allows a lot of cool things - for example you can emulate objects using functions.
<p>
(I'm the author of <a href="http://www.gnu.org/software/kawa/">Kawa</a> the Scheme-on-JVM system that many people like for scripting Java.)
Well everyone else seems to think this guy thinks M$ employees have written half of linux on company time. If that's what he thinks he's an idiot.
Well, everone else is an idiot. Of course that's not what Stan thinks! It was a joke. Duh.For that matter the NC agreements that stipulate that you cannot work for a competitor for X number of years after leaving the company never hold up in court either.
Perhaps, but the NC argreements that stipulate that you cannot work for a competitor for X number of months after leaving are likely to be enforceable, according to all I've read. The enforceability depends on the length of time covered, how widely the term "compete" is interpreted, what alternative employment you have, how well you've been compensated, etc. This means it's up to a judge to interprete what is reasonable.lo -
hi 70
Er, that is the way they always show it.
I guess means "not applicable", since it's a "forecast" and Friday morning already happened.
The language spec, while good, is incomplete and outdated. There is no library spec publicly available. The two-volume (plus supplement) Java Class Libraries set from Addison-Wesley is pretty good, but they have many errors and by no means qualify as a specification: There is way insufficient information to write a compatible implementation (though they help). (I speak from experience as the former technical lead for Gcj.)
The documentation for Swing is even worse, with no real documentation out there beyond the very terse javadoc-generated api documentation. I have found one book (from O'Reilly) that goes into any detail on the Swing text classes.
I hope your point is that you misread what I wrote, since that's what you seem to be saying.
Sorry, I misread that sentence; you don't explicitly say Stallman personally wrote glibc.
However, you say "Stallman's library" (or similar words) many times. You also talk about "Stallman's improvements", when you mean "Ulrich Drepper's improvements". This is not only very misleading, but it also robs Ulrich (who is not mentioned once in your article) of his richly deserved credit.
Like several other commentators, you seem to feel my short essay should have been a better history of Unix.
No, I feel that if you are going to write a historical essay you should try a bit harder to avoid false statements or phrasing that is likely to be misunderstood. And if mistakes or misleading phrasing is pointed out, you should try to correct them.