BitC was linked on reddit a few days ago and caught my interest. It's pretty close to the programming language I've been thinking about in my head in many respects (but I lacked the ability to get it done). I've been pretty dissatisfied with most languages out there and have resorted to using python for most purposes just because it gets the job done the fastest.
I have a few comments: I really think compiling to LLVM bytecode is the right way to go. The homepage mentions that LLVM work began in March, but the source code doesn't seem to use it at all. Is it still your intention to use LLVM? One thing that clang does really well is proper error messages. This is also, to me, one of the main attractive properties of python (although the errors are at runtime). g++, on the other hand, has completely incomprehensible error messages if you make a mistake with anything that uses templates. In my opinion, it would be a good move to make error messages a focus early on. I know that the language isn't final right now, but from what I've read, you have most of the language finalized. There are still some features, like literal types, that are useful but not vital to get it working. If you were to work out the syntax for the language, it'd already be useful for development. The advantage of getting it working early is that you'd get to test what you have on a wider audience and perhaps attract extra help. One other minor issue I've been thinking about is: in some statically typed languages, serialization is just a pain. C++ serialization libraries tend to require implementation of a serialization function for each class, which is fine for simple classes without pointers, but pointers tend to complicate serialization (for example the timezone pointer in boost's datetime, which prevented them from implementating serialization for timezone-dependent datetimes). Python's pickle module (being automatic) is a very nice solution, but is obviously not possible in many statically typed languages. I'm not sure if it'd have any other uses, but for serialization, it'd be useful to be able to iterate over fields of a struct or at least be able to convert it to a (string, value) map and to be able to construct instances of types from the fields. I'm a little concerned about the increasing complexity of the language recently. Particularly, literal types and the lifting solution that was posted earlier seems like a huge workaround. I can understand the motivation for objects, but it falls under the "added complexity" part. I think complexity tends to be a huge detractor for languages like Haskell and C++ (where it's only useful to use a certain subset of the language). Also, I'd be interested in helping if you're looking for it. Jonathan Hseu
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
