Welcome to Max! -Tril
Navigation:
I think of TUNES as a standards platform; an interface that should act the same on every computer system that implements the standard. The standard would be created collaboratively through the TUNES project. TUNES will be a standard for a complete computing system where the source code to any running program is easily accessible and modifiable on the fly; in a word, reflective.
Max is a specific architecture designed to implement the principles (formerly called requirements) set forth by the TUNES HLL project. As such, Max should be perfectly suitable as the underlying system used to implement any other features desired by the TUNES project. However, Max's scope stops at the minimum requirements to implement the principles, for two reasons:
On the other hand, TUNES does not have a design for an OS or for a core system, and I do not care to try to convince anyone that my design should be called TUNES (especially since my design hasn't been proven to work yet). Since my work is released publically with no restrictions (License heading below), members of TUNES are, and anyone else is welcome to make changes, add features and re-release it under any name they wish. It's more important that Max simply get finished. If I succeed, then members of TUNES can adequately evaluate Max and determine what relationship they wish to pursue with me. Until then, I'm in coding phase since I believe I have enough ideas to work with for now.
The essential idea is that existing software systems don't operate well together because the programmers thought their mission was to create narrowly-defined, specific behavior. Of course systems don't work well together when they weren't designed with that goal in mind. I intend to fix this with Max by thinking about the bigger picture the entire time: for each component, it must incorporate cleanly into the overall design. Max will be the center piece of the computing system; the core, which every piece of software will be integrated with, and through this core, all the other software that integrates with the core. To integrate software into Max, you use Max's type system for all your data (which should be expressive enough to include any type from any other language), and Max's flexible data flow specification system for all your code. The specification system connects components together using types, and should be expressive enough to support any language paradigm such as functional, procedural and declarative. Max will include a dynamic compiler that looks at the specification to generate code and schedule it for execution. The input specification to the dynamic compiler is integral, and its output is integral if it does its job in implementing the specification. Reflection is accomplished by having the DC running at all times and updating the implementation based on changes in the specification.
I believe a usable computing system based on a dynamic compiler is possible efficiently on current hardware, because reflective systems are inherently more efficient than non-reflective systems. My definition of efficiency is "how long it takes to do what the user wants." In the case when the programmer is a different person from the user, there will nearly always be impedance mismatch between what the programmer wrote and what the user actually wants done. There is nearly always inefficiency, therefore, unless users have the ability to adapt programs to their own needs. Reflective systems are adapted to just this goal, and therefore reach the highest possible efficiency according to my definition. The user in this case is me, and I want to create elegant, transparent, revolutionary code.
You may do whatever you want with this software, period. As much as possible, we give this software to the public domain and waive all waivable rights granted to us under copyright.
The README contains requirements and instructions for getting started.
The main Max documentation consists of one file, which includes documentation and source together, thanks to the Noweb literate programming system. You can create your own copy of the documentation from the .tar.gz below using noweb. See the README for details. The document is made available in several formats and compression methods for your convenience.
2007-08 I've switched the revision control system for the Max project from CVS to Darcs. Access the new darcs repository using:
darcs get http://max.tunes.org/max
I ran cvs2darcs on the old repository, to try to keep the history of old changes, but it created a corrupted repository with a duplicate patch and I couldn't figure out how to fix it. If you succeed in merging the old cvs and new darcs repositories, let me know, but it's probably not worth it.
You can still access the old CVS repository, but it will not receive any updates. See the darcs section.
Set CVSROOT to ":pserver:anonymous@cvs.tunes.org:/var/lib/cvs/max"
cvs loginPress Enter for the password.
cvs co max
Version 0.1: functions specified by listing tuples explicitly, and builtin functions implemented in LISP.
Version 0.1: can build expressions from the bottom up and evaluate them
Version 0.1: Enumerated types, "infinite" types implemented by CLOS instances
Version 0.1: Product and sum types are present
Not in Version 0.1
Not in Version 0.1
Version 0.1: None, nothing worth saving
Version 0.1: Several address types implementing ADTs demonstrate use of the unified addresses