Skip to content

jpt4/decac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exported from https://code.google.com/p/decac/ on UTC20150909.

This is an act of preservation.

Not the work of jpt4. All attribution and credit to Eli Gottlieb.

Deca: a functional, object-oriented, generic systems programming language
by Eli Gottlieb, copyright 2010-2013
January 27, 2013
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

Deca is a language designed to provide the advanced features of sophisticated, high-level programming languages while still programming as close as possible to the bare metal.  It brings in the functional, object-oriented, and generic programming paradigms without requiring a garbage collector or a threading system, so programmers really only pay in performance for the features they use.

Deca provides first-class functions, lambdas, lexical closures to support functional programming.  It provides type inference while still allowing and checking type annotations.  Region-based memory management is used in place of garbage collection to support data of dynamic lifetime, and option types replace null pointers.

The language definition is evolving steadily in order to reduce the number of language features.

-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------

decac is Deca's compiler, written as a frontend compiler invoking LLVM (http://www.llvm.org).  It is written in Scala (http://www.scala-lang.org), with a parser in Java generated by SableCC (http://sablecc.org) from the grammar file deca.scc.  Its build system is based, currently, on Apache Ant (http://ant.apache.org), although the Java bindings I wrote for LLVM compile in their own fashion.

The entire thing is a work-in-progress right now, but I can safely say that (subject to a refutation of my proof that Deca's type inference always terminates) the type system and type inference are done.  I can also safely say that the syntactic grammar is likely to change for the better and clearer as I find ways of eliminating the ambiguities that arise from attempting to simplify it.

To compile decac, run:
$ ant build_parser
$ and build

The parser need only be rebuilt when deca.scc has been altered.

Happy hacking!
--Eli Gottlieb

About

Automatically exported from code.google.com/p/decac

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages