packages (was Re: [MLton] syntax error for "_address")

skaller skaller@users.sourceforge.net
Sat, 05 Nov 2005 02:13:03 +1100


On Fri, 2005-11-04 at 06:48 -0600, John Reppy wrote:
> URL?  gogle turns up a 404 page.
> 
> 	- John
> 
> On Nov 4, 2005, at 2:13 AM, skaller wrote:
> 
> > Interscript

http://interscript.sourceforge.net/

However for a better idea how it works, download

http://felix.sourceforge.net

The whole system is built with interscript (which is
distributed in the Felix tarball).

Basically it is a literate programming tool written
in Python. Unlike other such tools, you can write
arbitrary Python script inside any document.

Therefore, all documentation and all code is generated,
and the generator is a high power programming language
equipped with lots of libraries. The default is just
to copy code line for line .. trivial example:

@head(1,'A heading')
Some comments.
@h = tangler("prg.c")
@select(h)
/* this is a C program */
int main() {
@for i in range(1,10):
  tangle('printf("%d\n",'+i+');')
@#
}

The builtin function 'tangle' generates output,
the @ symbol announced executable script.

The system generates 

* source code
* build scripts
* test data
* test harnesses
* configuration scripts

.. and everything else related to a project, all from
a single file format.

You may ask: "How is this a language independent
package manager??"

Well, what else do you want from a system than to
be able to say:

iscr mypackage.pak

and have it build your package on all platforms, no matter
whether the contents are shell scripts, Python code,
C or C++, Ocaml or Haskell, test data or whatever?

Does it 'automagically' handle Haskell build requirements?
Heck no. But unlike typical Unix build systems, it doesn't
get in the way of you writing code to do that.

At present, Felix builds on Linux, Cygwin, MinGW, Win32,
and OSX .. all from the same tarball using the same script.
The tarball contains a 'configure' script (win32config.bat
on Win32) as a convenience to help bootstrap the process.

Anyhow, much as I would love to see a Universal language
independent OS independent declarative language for
describing packages .. it doesn't exist.

Code contained *inside* the packages written
in a Universal language independent OS independent
language is next best.

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net