36500c0575
Changes from previous: ---------------------- 2012-11-19 Albert Graef <Dr.Graef@t-online.de> * 0.56 release. * configure.ac, interpreter.cc/hh: LLVM 3.2 compatibility. 2012-11-13 Albert Graef <Dr.Graef@t-online.de> * runtime.cc (pure_str): Alternative str() implementation which returns a Pure string instead of a raw C string. We use this in primitives.pure now to prevent the memory leaks resulting from calling str() directly from Pure. * util.cc (my_strdup, my_strfree): strdup/free replacements to reduce the number of temporary string allocations. This is still experimental. * interpreter.cc (compile_interface): Get rid of bogus warnings for abstract (unimplemented) interface types. (finalize_interface_rules): Fix detection of empty interfaces. This fixes issue #95. * lib/prelude.pure, lib/matrices.pure: Fixes to all, any, unzip (cf. issue #92 and #93). Also, smatrix accepts a dimension argument now like the other matrix construction functions (issue #96). * lib/primitives.pure: Improved simplifications of partially evaluated logical connectives. E.g., both 1&&x and x&&1 give x now. 2012-11-06 Albert Graef <Dr.Graef@t-online.de> * texmacs: Overhaul of TeXmacs plugin. 2012-10-19 Albert Graef <Dr.Graef@t-online.de> * runtime.cc (reduce): Fixed a memory leak and resolved a rather obscure segfault due to global closures becoming invalidated by a recent recompile. 2012-10-16 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: TeXmacs completion support. 2012-10-12 Albert Graef <Dr.Graef@t-online.de> * pure.cc, lexer.ll, runtime.cc: Improved readline support: Add secondary command input, so that the debugger has its own command history. 2012-10-08 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure (n..m): Bugfix: For consistency with the n1:n2..m case, do a quick check that m-n yields a real value (this will fail if n and m don't belong to the same enumerated type, in which case we want to leave n..m as a normal form). * interpreter.cc (exec): Improvements in TeXmacs mode. The REPL now temporarily replaces __show__ with __texmacs__ in order to allow for custom pretty-printing of expressions in TeXmacs mode. (Note that simply redefining __show__ may break applications which rely on print representations returned by the `str` function.) 2012-10-04 Albert Graef <Dr.Graef@t-online.de> * lib/primitives.pure: Rename break, trace to __break__, __trace__ to prevent naming conflicts. While `break` isn't likely to occur in user code, `trace` is commonly used, e.g., as a matrix operation. 2012-10-02 Albert Graef <Dr.Graef@t-online.de> * examples/texmacs: Added TeXmacs/LaTeX template contributed by Kurt Pagani. 2012-09-28 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc: Use a reasonable default for the advisory stack limit so that stack checks are always done by default. 2012-09-27 Albert Graef <Dr.Graef@t-online.de> * examples/matrix_inversion.pure: Added matrix inversion example by Rob Hubbard, ported from Q to Pure by Jiri Spitz. * lexer.ll (docmd): Add -h (help) option to the del, trace and run commands. 2012-09-26 Albert Graef <Dr.Graef@t-online.de> * etc/*: Add new break and trace builtins to keyword tables. * lib/primitives.pure: New break and trace builtins (see below). * runtime.cc/h: New pure_break() and pure_trace() primitives. These trigger debugging and tracing when called from a Pure program with debugging enabled. 2012-09-24 Albert Graef <Dr.Graef@t-online.de> * examples/lu.pure: Example contributed by Johannes Engels. * interpreter.hh (interpreter), interpreter.cc (exec), lexer.ll (lex_input), runtime.cc (pure_debug_rule), pure.cc (main): Add minimal support for texmacs (http://www.texmacs.org/), per request by Kurt Pagani (issue #89). * etc/pure-mode.el.in: Add a pure-send-yank command which allows to send lines from the kill ring to the interpreter. This works in both pure-mode and pure-eval-mode. Also added a new pure-send-skip-prompts flag (enabled by default). This causes the send commands to preprocess input which looks like a session transcript containing both command prompts and results, by removing prompts and skipping non-command lines. This is convenient, in particular, to send samples of interpreter interactions from the online documentation. 2012-09-20 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure, lib/primitives.pure: Declare 'true' and 'false' as nonfix symbols so that they can be used in patterns. Also add a 'bool' type along with a corresponding 'boolp' predicate for normalized truth values (0 and 1), and a 'bool' function to convert machine integers to normalized truth values. 2012-09-11 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure: Adjust the __do__ macro for generator clauses involving patterns (see below). * interpreter.cc (mklistcomp_expr, mkmatcomp_expr): Add the necessary magic to make comprehensions involving patterns filter out unmatched generator values automatically, as it is in Haskell. 2012-09-07 Albert Graef <Dr.Graef@t-online.de> * lib/enum.pure: New enum.pure module which provides some convenience functions to facilitate the creation of enumeration types. Experimental. 2012-09-06 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure (..): Fix some glitches in the generic arithmetic sequences with step size, so that they work with general enumerated types. 2012-09-05 Albert Graef <Dr.Graef@t-online.de> * pure.cc (main): Spiffy new logo for the sign-on message. You can disable this with the --plain option or by setting the PURE_PLAIN environment variable, if you prefer the old sign-on message. 2012-08-22 Albert Graef <Dr.Graef@t-online.de> * parser.yy: Uncaught exceptions of mklistcomp_expr/mkmatcomp_expr in parser (fixes issue #88 reported by kp@scios.ch). 2012-08-15 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: Cosmetic changes to the parsing of special command syntax (fixes issue #84). 2012-08-14 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (build_map): 'case' needs a separate FMap root for each rule so that the call to FMap::select() in try_rules() does the right thing (fixes issue #87 reported by Jim Pryor). 2012-07-17 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh, runtime.cc, pure.cc, lexer.ll: Integrated a patch by Jim Pryor (with modifications) which allows the escape mode command prefix to be specified with the --escape option and the PURE_ESCAPE environment variable. Thanks Jim! 2012-07-16 Albert Graef <Dr.Graef@t-online.de> * printer.cc (printx): Bugfix in pretty-printer: Type tags must be padded with whitespace if compile time expressions are printed with deBruijn annotations (-v2). Otherwise the pretty-printed code won't be reparsed correctly, since x/*...*/::y will be parsed as x ::y rather than x :: y. This bug affected, in particular, test/special.pure. Many of the other golden test logs were also updated accordingly. 2012-07-06 Albert Graef <Dr.Graef@t-online.de> * lexer.ll, parser.yy, interpreter.cc/hh, symtable.cc/hh: Implemented namespace brackets, based on an idea by Yann Orlarey. This makes it much more convenient to use embedded domain-specific sublanguages in Pure. For instance, you may now write something like: outfix « »; namespace faust (« »); This means that the namespace 'faust' can now be accessed on the fly in expressions like «(a,b,c) : (sin,cos,tan)». The subexpression inside the namespace brackets is then parsed by temporarily switching to the corresponding namespace. The namespace brackets themselves must be a pair of outfix symbols which has been declared already, and are removed from the resulting expression. This works pretty much like a 'namespace' declaration, but only gives access to the public symbols of the namespace, and can be used anywhere inside an expression (even on the left-hand side of a rule). Nesting these constructs is also possible. Also, to accommodate these changes, the declaration syntax is now slightly more liberal in that qualified symbols are permitted in symbol and namespace declarations. (In the case of symbol and 'using namespace' declarations, it will also be checked that qualified symbols are declared in or imported from the proper namespace.) This allows you to write stuff like: namespace faust with outfix faust::begin faust::end; end; namespace faust (faust::begin faust::end); which isn't possible without using namespace qualifiers because 'end' by itself is a reserved keyword in Pure. 2012-06-28 Albert Graef <Dr.Graef@t-online.de> * lexer.ll (docmd): Bugfixes and improvements in the interactive command parser. In particular, clear, dump and show will now complain about undefined symbols. This doesn't detect unmatched glob patterns and so isn't 100% foolproof, but it should catch most common errors and typos. 2012-06-27 Albert Graef <Dr.Graef@t-online.de> * pure.cc: Add -e/--escape option and PURE_ESCAPE environment variable to switch on new escaped command syntax. Also fix up command completion accordingly. * lexer.ll, interpreter.cc/hh: Add support for escaped command syntax, as discussed on the mailing list. If this option is enabled, all interactive commands are prefixed with '!'. (This only applies to the command line, evalcmd works as before.) 2012-06-26 Albert Graef <Dr.Graef@t-online.de> * examples/msort.pure: Added merge sort example by Jim Pryor. * configure.ac: Bump version number. * interpreter.cc (macspecial), symtable.cc/hh: Add a new built-in __gensym__ macro, per request by Jim Pryor. This enables you to create new, unqualified symbols on the fly, which is useful if a macro needs to generate block constructs such as lambdas and when/with clauses from scratch. 2012-06-25 Albert Graef <Dr.Graef@t-online.de> * lib/matrices.pure: Experimental: As suggested by Jim Pryor, add non-splicing vector brackets as a shorthand notation for nested vectors. * runtime.cc (hash): Include environment in closure hashes (fixes second part of issue #82). 2012-06-24 Albert Graef <Dr.Graef@t-online.de> * examples/do.pure: Add __do__ macro example from the Macros section of the manual. * runtime.cc (hash): Bogus assertion for anonymous closure (fixes issue #82 reported by Jim Pryor). 2012-06-20 Albert Graef <Dr.Graef@t-online.de> * etc/pure.ssh: Added Eddie Rucker's a2ps style sheet for Pure. 2012-06-17 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (quoted_tag): Missing "as" pattern in quoted pattern (fixes issue #79 reported by Jim Pryor). 2012-06-16 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (macspecial): Leave the cases of __lambda__, __case__, __when__ and __with__ with an empty list argument undefined by the built-in macro rules (fixes issue #78 reported by Jim Pryor). * interpreter.cc (const_defn, clearsym): Make sure that we allocate a fresh expression pointer for each constant value cached in a read-only variable. This will leak a tiny amount of memory each time such a constant is redefined (which is possible using interactive commands and the introspection facilities), but this is needed to keep any dangling references to the constant intact. This fixes issue #77. 2012-06-15 Albert Graef <Dr.Graef@t-online.de> * runtime.cc (get_funptr): get_funptr() might be invoked after a function was already purged from the environment. 2012-06-14 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (checkfuns): Remove bogus assertion (issue #75). (next_statem): Missing case in code generation for matrix matching (issue #76). Reported by Jim Pryor. 2012-06-04 Albert Graef <Dr.Graef@t-online.de> * 0.55 release. * interpreter.cc: Make clang and gfortran -fdragonegg the default compilers for inlined C/C++/Fortran code, as llvm-gcc isn't supported in the LLVM 3.x series any more. 2012-06-03 Albert Graef <Dr.Graef@t-online.de> * configure.ac: Bump version number. * configure.ac, interpreter.cc: Add some options to deal with systems such as Mac OSX and Ubuntu which may have the LLVM toolchain and configure script installed under different prefixes, so that several LLVM versions can coexist on the same system. First, the configure option --with-tool-prefix allows to specify the prefix for the LLVM toolchain. This option, if specified, is also used to locate the llvm-config script, so that the proper LLVM version is selected. Second, the --with-llvm-version option allows to set the desired LLVM version, in which case configure tries to locate the llvm-config-<version> script on the PATH (after trying the tool prefix, if specified). If this option isn't specified, we default to looking for the llvm-config script on the PATH, which matches the behaviour in previous releases. If none of these yield a usable llvm-config script, we fall back to trying llvm-config-<version> for recent LLVM versions, preferring the latest version if found. Otherwise we give up and print an error message. 2012-06-02 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh: Bugfix in type name resolution. Reported by Lucas Paul. Fixes issue #71. 2012-05-22 Albert Graef <Dr.Graef@t-online.de> * Debian support: Add Debian packaging and a corresponding goal in the Makefile. 2012-05-19 Albert Graef <Dr.Graef@t-online.de> * 0.54 release. * interpreter.cc (funsubstw): Fix clobbering of qualified symbols in the global namespace. 2012-05-15 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure: Fix up regression in optimization rules for list slices introduced in Pure 0.49. Reported by Yann Le Du. 2012-05-09 Albert Graef <Dr.Graef@t-online.de> * configure.ac: Version bump. * interpreter.cc/hh, runtime.cc, pure.cc: LLVM 3.1 compatibility fixes. 2012-03-22 Albert Graef <Dr.Graef@t-online.de> * 0.53 release. * runtime.cc (pure_sort): As suggested by Peter Summerland, optimize the case of POD types (int, bigint, double, string) in conjunction with the standard (<) and (>) predicates. In this case we don't actually have to invoke the Pure predicates, but can just execute the comparisons directly in C++. With int lists this gives a 10x speedup. 2012-03-08 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: Add -r and -s options to the trace command to switch between the new recursive and the previous skip tracing mode (see below). * interpreter.cc/hh, runtime.cc: Fix up function and macro call tracing to allow for recursive tracing of reductions while a tracepoint was invoked. Make this the default, as it's more useful in most situations. 2012-03-08 Albert Graef <Dr.Graef@t-online.de> * 0.52 release. * lexer.ll (docmd): Add a -a option to the trace command which sets tracepoints on all (global) symbols. 2012-03-06 Albert Graef <Dr.Graef@t-online.de> * Makefile.in: Fix a glitch causing discrepancies between generated log and actual test log for the prelude. * lib/prelude.pure: Fix up the definition of the __do__ macro for the reworked treatment of macro arguments. * interpreter.cc/hh, lexer.ll: Fixed some of the bad side-effects of autoquoting of macro arguments which would break macro hygiene. Implicit quoting of macro arguments is now disabled by default, and can be selectively enabled for individual macros with the new --quoteargs pragma. Also, autoquoted macro parameters are now actually quoted, i.e., embedded macro calls are not evaluated. This fixes name capture issues due to premature evaluation of embedded macros in quoted macro arguments. One minor defect which remains is the case of a free variable in a macro substition being captured by a local definition if the entire construct is quoted; see the last example in test078.pure. (One might argue, though, that in this specific case the behaviour of the macro evaluator is actually correct.) 2012-03-02 Albert Graef <Dr.Graef@t-online.de> * runtime.cc: Update for the latest Faust revision after cleanup of the Faust UI data structures. 2012-02-20 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (lcsubst): Added a missing recursion in the conditional, lambda, case, when and with cases. This fixes a failed assertion in the bind() method which could also occur, in particular, when processing comprehensions on the left-hand side of an equation or lambda. Reported by Richard Grossman. 2012-01-05 Albert Graef <Dr.Graef@t-online.de> * parser.yy: Refactor some grammar rules so that some types of syntax errors in toplevel constructs are caught a bit earlier (see issue #69 reported by Jiri Spitz). |
||
---|---|---|
.. | ||
DESCR | ||
distinfo | ||
Makefile | ||
PLIST |