Expansion on bootstrap problem w/ Java, Python Jonathan S. Shapiro (shap@eros-os.org)
Wed, 5 Apr 2000 12:34:13 -0400

I've been playing eCatch-up, but given the responses from Marc Stiegler, Ping, and others I want to expand on an earlier comment I made.

First, I think that both Python and Java are reasonable choices for lots of things, assumnig that a reliable runtime is available. This is not a religious issue. That said, I think that they may not be good choices for this effort. Here are the reasons why:

  1. This tool must run native on EROS very early in the porting cycle.
  2. Part of this tool must implement a large-scale server.

Specific issues (Java):

I have run a number of supposedly straightforward applications recently in Java, resulting mostly in jvm core dumps. Lots of core dumps. Blackdown core dumps, IBM jdk core dumps, kaffe core dumps. Many many core dumps. The java core dump program is indeed very portable, but I'm not sure about any *other* Java programs...

More to the point, there exists no reasonably complete open source class library. Several jvm's, but the class libraries aren't there yet. This makes porting Java to EROS very difficult, as certain portions of the class library really have to be tied to the particular JVM. I don't want to bet on this happening quickly.

Specific issues (Python):

As I said in my earlier mail, the lack of strong typing is a serious issue, but I also want to respond to something Ping said about the benefits of higher-level languages.

Ping is completely right. Python has lots of facilities that are very nicely packaged, and for many many tools that is a strong plus. It is NOT a plus for those tools that are needed to build the operating system.

The reason is that in support of those lovely features, Python has got knowledge of lots of things built in to the runtime: sockets, networking, file systems, etc. etc. I'm concerned about how much of the EROS system needs to be working before Python itself can be successfully ported. The moral is that you really desperately want to minimize the number of environmental dependencies that your bootstrap tools rely on. I'm not sure that Python qualifies. Not sure that it *doesn't* qualify -- the net dependency may be inherent in the application, and I need to think about that. -- but not sure that it qualifies.

I'm going to engage Dan in a discussion on this subject and summarize the results here. Meanwhile, can anyone shed light on two specific questions about Python for those who have experience with the runtime and with performance-intensive server apps:

  1. How easy is it to build a python without ANY networking support?
  2. Is Python suitable for use on the server-side of a high-load service?

shap