+## NB ##
+
+These notes reflect earlier thinking about the language and may not
+necessarily accurately describe the current goaljobs language. Please
+read the documentation instead.
+
+## NB ##
+
Like 'make' except:
- Predicates can be based on arbitrary expressions, not just
"file X is older than file Y".
- Goals instead of variables.
- Persistent (across session) variables exist, but are not central.
- Doesn't use <<..>> for shell scripts (has a function 'sh' instead).
+ - No daemon.
Similarities to 'whenjobs':
- Each shell script runs in its own temporary directory.
-Example Makefile rule and translation to goaljobs language:
-
- %.o: %.c
- cc -c $< -o $@
-
- let goal compile c_file =
- require (file_exists c_file);
- let o_file = replace_substring ".c" ".o" c_file in
- target (file_exists o_file && file_newer o_file c_file);
- sh "cc -c %s -o %s" c_file o_file
-
Example program:
let package = "foo"