+ What is Argile
----------------
Argile is an experimental, C-based, compiled programming language,
that produces C code. It is not intended for beginners, but
for experimented programmers with a good knowledge of C.
For more detailed information on the language, see file doc/Argile.txt .
For information on copyright, see the `Copying' section of this file.


+ Features of Argile
--------------------
++ Variable syntax
++ Polymorphism-oriented
++ Call guessing
++ Keyword-less
++ UTF-8 based
++ Access to low level programming
++ Extensible through a module system
++ Parametered types
++ Object-oriented classes available
++ Implicit type casters can be defined
++ Definitions can be made after they are used
++ Subfunctions and anonymous functions
++ Both indentation-style and braces-style can be used


+ Why the name "Argile" ?
-------------------------
Argile means clay, which is often plastic and can take any shape.
Since the main feature of Argile programming language is to be
polymorphic, Clay would have been a well-suited name. However,
this word is too common, and a Clay programming language already
exists (according to web search engines).


+ Compilation Slowness
----------------------
The current version of ARC is about 16900 lines of argile code,
and compiles itself on an AMD Athlon(tm) 64 Processor 3000+ in about
1 minutes and 44 seconds ! (an average of 162 lines per second)
and that is including GCC compilation time which is around 30 seconds.
This is probably the slowest to compile known programming language;
besides, compilation time doesn't necessarily grow linearily.
The execution time however is the same as with C.


+ Installation
--------------
First, compile by typing the following commands:

   ./configure && make

Optionally, you can recompile the compiler with itself by typing:

   make backup && make re

Then, as administrator (super user or root), install with the command:

   make install


+ Testing compiled compiler
---------------------------
Once it is compiled, in the same build directory, type:

   export ARGILE_SOM_PATH=./modules/std.d/.libs
   export ARGILE_FILE_PATH=./argrt
   ./compiler/arc --line "use std"

This should print the following code:

   #include "./argrt/std.h"

   int main(int argc, char **argv)
   {
     return 0;
   }

For errors about files not found, see doc/File_pathes.txt


+ Testing the installed compiler
--------------------------------
Once it is installed, try:

   arc --version
   arc --line 'use std'


+ Copying
---------
Unless otherwise stated inside it, the following files are Copyrighted
as free software by the Argile authors (see AUTHORS file distributed
along with this software). You can redistribute it and/or modify it
under the terms of the GNU General Public License, either version 3 or
(at your option) any later version published by the Free Sofrware
Foundation (see COPYING file for details on the license).

Makefile.am
Makefile.in
config.h.in
configure
configure.ac
compiler/arc.arg
compiler/arc.argl
compiler/arc.c
compiler/arc.h
compiler/arc.p
compiler/Makefile.am
compiler/Makefile.in
libargile/argile.arg
libargile/argile.argl
libargile/argile.c
libargile/argilectx.arg
libargile/argilectx.argl
libargile/argilectx.c
libargile/argilectx.h
libargile/argilectx.p
libargile/argile.h
libargile/argile.p
libargile/bind.arg
libargile/bind.argl
libargile/bind.c
libargile/bind.h
libargile/bind.p
libargile/buff.arg
libargile/buff.argl
libargile/buff.c
libargile/buff.h
libargile/buff.p
libargile/call.arg
libargile/call.argl
libargile/call.c
libargile/call.h
libargile/call.p
libargile/code.arg
libargile/code.argl
libargile/code.c
libargile/code.h
libargile/code.p
libargile/cons.arg
libargile/cons.argl
libargile/cons.c
libargile/cons.h
libargile/cons.p
libargile/dbg.arg
libargile/dbg.argl
libargile/dbg.c
libargile/dbg.h
libargile/dbg.p
libargile/def.arg
libargile/def.argl
libargile/def.c
libargile/def.h
libargile/def.p
libargile/encode.arg
libargile/encode.argl
libargile/encode.c
libargile/encode.h
libargile/encode.p
libargile/field.arg
libargile/field.argl
libargile/field.c
libargile/field.h
libargile/field.p
libargile/file.arg
libargile/file.argl
libargile/file.c
libargile/file.h
libargile/file.p
libargile/fnc.arg
libargile/fnc.argl
libargile/fnc.c
libargile/fnc.h
libargile/fnc.p
libargile/inout.arg
libargile/inout.argl
libargile/inout.c
libargile/inout.h
libargile/inout.p
libargile/lexer.c
libargile/lexer.l
libargile/list.arg
libargile/list.argl
libargile/list.c
libargile/list.h
libargile/list.p
libargile/loc.arg
libargile/loc.argl
libargile/loc.c
libargile/loc.h
libargile/loc.p
libargile/Makefile.am
libargile/Makefile.in
libargile/match.arg
libargile/match.argl
libargile/match.c
libargile/match.h
libargile/match.p
libargile/module.arg
libargile/module.argl
libargile/module.c
libargile/module.h
libargile/module.p
libargile/parser.c
libargile/parser.h
libargile/parser.y
libargile/pos.arg
libargile/pos.argl
libargile/pos.c
libargile/pos.h
libargile/pos.p
libargile/shovel.arg
libargile/shovel.argl
libargile/shovel.c
libargile/shovel.h
libargile/shovel.p
libargile/syntax.arg
libargile/syntax.argl
libargile/syntax.c
libargile/syntax.h
libargile/syntax.p
libargile/text.arg
libargile/text.argl
libargile/text.c
libargile/text.h
libargile/text.p
libargile/type.arg
libargile/type.argl
libargile/type.c
libargile/type.h
libargile/type.p
libargile/util.arg
libargile/util.argl
libargile/util.c
libargile/util.h
libargile/util.p
libargile/var.arg
libargile/var.argl
libargile/var.c
libargile/var.h
libargile/var.p
modules/Makefile.am
modules/Makefile.in
modules/std.d/binds.arg
modules/std.d/binds.argl
modules/std.d/binds.c
modules/std.d/binds.h
modules/std.d/binds.p
modules/std.d/common.arg
modules/std.d/common.argl
modules/std.d/common.c
modules/std.d/common.h
modules/std.d/common.p
modules/std.d/Makefile.am
modules/std.d/Makefile.in
modules/std.d/std_autocast.arg
modules/std.d/std_autocast.argl
modules/std.d/std_autocast.c
modules/std.d/std_autocast.h
modules/std.d/std_autocast.p
modules/std.d/std_bind.arg
modules/std.d/std_bind.argl
modules/std.d/std_bind.c
modules/std.d/std_bind.h
modules/std.d/std_bind.p
modules/std.d/std_callcode.arg
modules/std.d/std_callcode.argl
modules/std.d/std_callcode.c
modules/std.d/std_callcode.h
modules/std.d/std_callcode.p
modules/std.d/std_cdata.arg
modules/std.d/std_cdata.argl
modules/std.d/std_cdata.c
modules/std.d/std_cdata.h
modules/std.d/std_cdata.p
modules/std.d/std_class.arg
modules/std.d/std_class.argl
modules/std.d/std_class.c
modules/std.d/std_class.h
modules/std.d/std_class.p
modules/std.d/std_ctype.arg
modules/std.d/std_ctype.argl
modules/std.d/std_ctype.c
modules/std.d/std_ctype.h
modules/std.d/std_ctype.p
modules/std.d/std_dig.arg
modules/std.d/std_dig.argl
modules/std.d/std_dig.c
modules/std.d/std_dig.h
modules/std.d/std_dig.p
modules/std.d/std_dump.arg
modules/std.d/std_dump.argl
modules/std.d/std_dump.c
modules/std.d/std_dump.h
modules/std.d/std_dump.p
modules/std.d/std_enum.arg
modules/std.d/std_enum.argl
modules/std.d/std_enum.c
modules/std.d/std_enum.h
modules/std.d/std_enum.p
modules/std.d/std_extdef.arg
modules/std.d/std_extdef.argl
modules/std.d/std_extdef.c
modules/std.d/std_extdef.h
modules/std.d/std_extdef.p
modules/std.d/std_extern.arg
modules/std.d/std_extern.argl
modules/std.d/std_extern.c
modules/std.d/std_extern.h
modules/std.d/std_extern.p
modules/std.d/std_field.arg
modules/std.d/std_field.argl
modules/std.d/std_field.c
modules/std.d/std_field.h
modules/std.d/std_field.p
modules/std.d/std_fieldset.arg
modules/std.d/std_fieldset.argl
modules/std.d/std_fieldset.c
modules/std.d/std_fieldset.h
modules/std.d/std_fieldset.p
modules/std.d/std_fsym.arg
modules/std.d/std_fsym.argl
modules/std.d/std_fsym.c
modules/std.d/std_fsym.h
modules/std.d/std_fsym.p
modules/std.d/std_funcdef.arg
modules/std.d/std_funcdef.argl
modules/std.d/std_funcdef.c
modules/std.d/std_funcdef.h
modules/std.d/std_funcdef.p
modules/std.d/std_gencode.arg
modules/std.d/std_gencode.argl
modules/std.d/std_gencode.c
modules/std.d/std_gencode.h
modules/std.d/std_gencode.p
modules/std.d/std_genlist.arg
modules/std.d/std_genlist.argl
modules/std.d/std_genlist.c
modules/std.d/std_genlist.h
modules/std.d/std_genlist.p
modules/std.d/std_globally.arg
modules/std.d/std_globally.argl
modules/std.d/std_globally.c
modules/std.d/std_globally.h
modules/std.d/std_globally.p
modules/std.d/std_hinclude.arg
modules/std.d/std_hinclude.argl
modules/std.d/std_hinclude.c
modules/std.d/std_hinclude.h
modules/std.d/std_hinclude.p
modules/std.d/std_nil.arg
modules/std.d/std_nil.argl
modules/std.d/std_nil.c
modules/std.d/std_nil.h
modules/std.d/std_nil.p
modules/std.d/std_print.arg
modules/std.d/std_print.argl
modules/std.d/std_print.c
modules/std.d/std_print.h
modules/std.d/std_print.p
modules/std.d/std_return.arg
modules/std.d/std_return.argl
modules/std.d/std_return.c
modules/std.d/std_return.h
modules/std.d/std_return.p
modules/std.d/std_set.arg
modules/std.d/std_set.argl
modules/std.d/std_set.c
modules/std.d/std_set.h
modules/std.d/std_set.p
modules/std.d/std_shiftlist.arg
modules/std.d/std_shiftlist.argl
modules/std.d/std_shiftlist.c
modules/std.d/std_shiftlist.h
modules/std.d/std_shiftlist.p
modules/std.d/std_stresc.arg
modules/std.d/std_stresc.argl
modules/std.d/std_stresc.c
modules/std.d/std_stresc.h
modules/std.d/std_stresc.p
modules/std.d/std_strunquote.arg
modules/std.d/std_strunquote.argl
modules/std.d/std_strunquote.c
modules/std.d/std_strunquote.h
modules/std.d/std_strunquote.p
modules/std.d/std_super.arg
modules/std.d/std_super.argl
modules/std.d/std_super.c
modules/std.d/std_super.h
modules/std.d/std_super.p
modules/std.d/std_syntaxof.arg
modules/std.d/std_syntaxof.argl
modules/std.d/std_syntaxof.c
modules/std.d/std_syntaxof.h
modules/std.d/std_syntaxof.p
modules/std.d/std_typeconv.arg
modules/std.d/std_typeconv.argl
modules/std.d/std_typeconv.c
modules/std.d/std_typeconv.h
modules/std.d/std_typeconv.p
modules/std.d/std_typefix.arg
modules/std.d/std_typefix.argl
modules/std.d/std_typefix.c
modules/std.d/std_typefix.h
modules/std.d/std_typefix.p
modules/std.d/std_typeof.arg
modules/std.d/std_typeof.argl
modules/std.d/std_typeof.c
modules/std.d/std_typeof.h
modules/std.d/std_typeof.p
modules/std.d/std_typeparam.arg
modules/std.d/std_typeparam.argl
modules/std.d/std_typeparam.c
modules/std.d/std_typeparam.h
modules/std.d/std_typeparam.p
modules/std.d/std_typeraw.arg
modules/std.d/std_typeraw.argl
modules/std.d/std_typeraw.c
modules/std.d/std_typeraw.h
modules/std.d/std_typeraw.p
modules/std.d/std_typeref.arg
modules/std.d/std_typeref.argl
modules/std.d/std_typeref.c
modules/std.d/std_typeref.h
modules/std.d/std_typeref.p
modules/std.d/std_typeselect.arg
modules/std.d/std_typeselect.argl
modules/std.d/std_typeselect.c
modules/std.d/std_typeselect.h
modules/std.d/std_typeselect.p
modules/std.d/std_union.arg
modules/std.d/std_union.argl
modules/std.d/std_union.c
modules/std.d/std_union.h
modules/std.d/std_union.p
modules/std.d/std_use.arg
modules/std.d/std_use.argl
modules/std.d/std_use.c
modules/std.d/std_use.h
modules/std.d/std_use.p
modules/std.d/std_vardef.arg
modules/std.d/std_vardef.argl
modules/std.d/std_vardef.c
modules/std.d/std_vardef.h
modules/std.d/std_vardef.p
modules/std.d/types.arg
modules/std.d/types.argl
modules/std.d/types.c
modules/std.d/types.h
modules/std.d/types.p
tools/arc-make.sh
tools/arc.sh
tools/fix-cvs-timestamps.sh

Unless otherwise stated inside it, the following files are Copyrighted
as free software by the Argile authors (see AUTHORS file distributed
along with this software). You can redistribute it and/or modify it
under the terms of the GNU General Public License, either version 3 or
(at your option) any later version published by the Free Sofrware
Foundation (see COPYING file for details on the license).

argrt/Makefile.am
argrt/Makefile.in
argrt/array.arg
argrt/array.argl
argrt/array.c
argrt/array.h
argrt/array.p
argrt/config.arg
argrt/config.argl
argrt/config.c
argrt/config.h
argrt/config.p
argrt/dbg.arg
argrt/dbg.argl
argrt/dbg.c
argrt/dbg.h
argrt/dbg.p
argrt/gc.arg
argrt/gc.argl
argrt/gc.h
argrt/hash.arg
argrt/hash.argl
argrt/hash.c
argrt/hash.h
argrt/hash.p
argrt/list.arg
argrt/list.argl
argrt/list.c
argrt/list.h
argrt/list.p
argrt/math.arg
argrt/math.argl
argrt/math.c
argrt/math.h
argrt/math.p
argrt/regex.arg
argrt/regex.argl
argrt/regex.c
argrt/regex.h
argrt/regex.p
argrt/SDL.arg
argrt/SDL.argl
argrt/SDL.h
argrt/std.arg
argrt/std.argl
argrt/std.c
argrt/std.h
argrt/std.p

Unless otherwise stated inside it, the following files are Copyrighted
as free documentation by the Argile authors (see AUTHORS file
distributed along with this software). You can redistribute it and/or
modify it under the terms of the GNU Free Docuementation License, ethier
version 1.3 or at your option any later published by the Free Software
Foundation (see doc/COPYING file for details on the license).

doc/Argile.txt
doc/File_pathes.txt
doc/How_to_distribute_argile_sources.txt
doc/How_to_make_an_extension_module.txt
doc/Known_bugs.txt
doc/std_doc.txt
doc/Using_std.txt
emacs-argile-mode/home_dot_emacs_addon.txt

