ab3fcf80df
Changes from previous: ---------------------- 2011-12-21 Albert Graef <Dr.Graef@t-online.de> * 0.51 release. * interpreter.cc: Bugfixes in macro substitution involving 'when' expressions (fallout from changes in when_codegen 2011-11-25). 2011-12-20 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc, runtime.cc/h: Add a new faust_load() runtime function which makes it possible to load a Faust dsp directly, without using eval (which isn't available in batch-compiled programs). Also fixed a bug in the Faust bitcode loader which would make it segfault in case of an existing but invalid Faust bitcode file. 2011-12-18 Albert Graef <Dr.Graef@t-online.de> * 0.50 release. * interpreter.cc (compiler): Add a --main option to the batch compiler which allows to set the name of the main entry point of the compiled module. This allows different batch-compiled modules to coexist in the same program. 2011-12-16 Albert Graef <Dr.Graef@t-online.de> * examples/bitcode/myinterp.pure: New example which illustrates how to create and use a secondary interpreter instance in Pure. 2011-12-15 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (inline_code): Add FAUST_OPT environment variable to allow optimization of inline Faust code. This is to be set to something like '| opt -O3'. Also add the -cn option with the Faust module name as argument to the Faust command of the inline compiler. 2011-12-13 Albert Graef <Dr.Graef@t-online.de> * runtime.cc, lib/faustui.pure: Add support for metadata in Faust control groups. 2011-12-07 Albert Graef <Dr.Graef@t-online.de> * runtime.cc, lib/faustui.pure: Add support for controller metadata in Faust dsps. To these ends, controls are now represented in the form 'f ref meta initargs', where the additional 'meta' argument is a list of key=>val string pairs. * interpreter.cc (bctype_name): Make gsl_matrix type detection work with dragonegg. * interpreter.cc, runtime.cc/h: Add support for retrieving the global metadata of Faust dsp classes. 2011-12-06 Albert Graef <Dr.Graef@t-online.de> * lexer.ll, interpreter.cc/hh: New conditional --ifdef and --ifndef pragmas. Also change the way that compilation options are initialized using PURE_OPTION environment variables. 2011-12-05 Albert Graef <Dr.Graef@t-online.de> * runtime.cc, interpreter.cc: Add custom hashing of tagged pointers. Reported by Peter Summerland. (hash): Added missing matrix cases. Reported by Peter Summerland. 2011-12-04 Albert Graef <Dr.Graef@t-online.de> * runtime.cc (pure_force): Plugged a memleak in recursive pure_force() calls. Reported by Stephan Rudlof. 2011-12-02 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (LoadFaustDSP): Proper cleanup for all globals in Faust modules when a module gets reloaded. 2011-11-30 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (compile_interface): Optimize away superflous candidate patterns which are subsumed by other interface patterns. * interpreter.cc (LoadFaustDSP, compiler): Bugfixes in the bitcode linker. Make sure that external function declarations and internal Faust functions are never stripped from batch-compiled code. Also make sure that old code for internal Faust functions gets cleaned before reloading a Faust module. 2011-11-25 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (when_codegen): Optimization of non-binding 'when' clauses. This eliminates superflous environments and function calls for clauses of the form 'when x end' where x is just an expression. These now just compute x, then throw it away immediately, just like the $$ operator. * etc/pure-mode.el.in: Have #! (shebang) treated as preprocessor lines rather than comments, so that they aren't skipped by the movement and pure-send-line commands. Also, make pure-send-line skip over multi-line comments (if you really want to send such a comment to the interpreter, you can use pure-send-defun for that now; this will send the entire comment at once). * interpreter.cc/hh, runtime.cc/h, lib/primitives.pure: Add get_interface_typedef() operation. 2011-11-24 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: Add --rewarn, --rewarn2 pragmas which reset the corresponding warning options to their defaults. 2011-11-23 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh, expr.cc/hh, parser.yy: Lots of cosmetic changes and bugfixes in the interfaces implementation. Also improved the diagnostics (-w). 2011-11-22 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh, runtime.cc/h, lib/primitives.pure: Add meta operations for managing interfaces from Pure. * etc/*: Add new 'interface' keyword to the language modes. * pure.cc, lexer.ll: Add new 'interface' keyword to the keyword table. Add type symbols to the completion table. * lexer.ll: Add 'show interface' command. * expr.cc/hh, interpreter.cc/hh, lexer.ll, parser.yy: Add basic implementation of interface types (experimental). 2011-11-18 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc: Resolve type aliases at compile time as far as possible, so that the best possible matching code can be generated. * interpreter.cc: New read-only interactive and debugging options for conditional compilation. 2011-11-17 Albert Graef <Dr.Graef@t-online.de> * configure.ac: Bump version. * lib/primitives.pure: The rlist type can now be defined in a straightforward way. * interpreter.cc (try_rules): Implement tail call elimination on simple recursive type definitions. 2011-11-16 Albert Graef <Dr.Graef@t-online.de> * 0.49 release. 2011-11-15 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh: Integrate code generation options (--checks et al) with the new conditional compilation pragmas, so that they can be set with --enable, --disable and queried with --if, --ifnot. 2011-11-14 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure, lib/matrices.pure: Add some conditional pragmas so that various kinds of optimization rules in the prelude can be disabled if the user wants to do that. * pure.cc, pure_norl.cc, runtime.cc: Add --enable and --disable command line options. * interpreter.cc/hh, lexer.ll: Add conditional compilation pragmas --enable, --disable, --if, --ifnot, --else, --endif. * lib/matrices.pure: Add some experimental optimization rules for vector et al, which make them use vectorseq et al to create vectors of int and double values from arithmetic seqences in an efficient way. (This is similar to the slices optimization in that it prevents the construction of an intermediate list value, which saves memory and speeds up things considerably for large vectors.) 2011-11-13 Albert Graef <Dr.Graef@t-online.de> * lib/prelude.pure, lib/strings.pure, lib/matrices.pure: Add some experimental optimization rules for slices with contiguous int ranges, so that we don't actually construct the index list any more. This speeds up slices considerably and can also save substantial amounts of memory, especially in the matrix case. 2011-11-11 Albert Graef <Dr.Graef@t-online.de> * lib/avltrees.pure, lib/dict.pure, lib/set.pure: Some bugfixes and optimizations in the comparison operations. Also, as discussed on the mailing list, we now fall back to syntactic equality of values in dictionary operations if semantic equality isn't defined. 2011-10-27 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh, runtime.cc/h: Add interpreter-local storage, exposed by means of the pure_interp_key(), pure_interp_set() and pure_interp_get() functions in the runtime. This allows applications to keep track of static data which depends on the particular interpreter instance, such as symbols and Pure expression data. The interface is similar to the POSIX thread-local storage functions (pthread_key_create and friends). 2011-10-25 Albert Graef <Dr.Graef@t-online.de> * interpreter.hh, runtime.cc/h: Add a pointer equality callback, so that tagged pointer types can hook into same() and the null check for pointers. 2011-10-23 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc, symtable.cc/hh: Add a new built-in __list__ macro. This expands a tuple to a list, preserving embedded tuples in the same way that list values are parsed. This is provided for the benefit of custom aggregate notations (usually outfix operators) which are supposed to be parsed like the built-in list and matrix brackets. Note that there's no way to actually define this macro in Pure, so it is provided as a builtin instead. * configure.ac: Bump version number. 2011-10-21 Albert Graef <Dr.Graef@t-online.de> * INSTALL: Slight reorganization of the installation manual, to make it easier to link to various subsections from the wiki and elsewhere. Also added a note about ready-made packages now being available on FreeBSD. 2011-10-18 Albert Graef <Dr.Graef@t-online.de> * 0.48 release. * interpreter.cc (inline_code): Add experimental DragonEgg support. 2011-10-17 Albert Graef <Dr.Graef@t-online.de> * configure.ac, interpreter.cc/hh, runtime.cc: LLVM 3.0 compatibility fixes. 2011-10-15 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc, runtime.cc/h, lib/primitives.pure: Add a function lasterrpos to give more detailed error information about a failed val, eval or evalcmd operation. Per request by Peter Summerland. 2011-10-14 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: As suggested by John Cowan, add a --bigint pragma which, if enabled, causes all integer literals in the source to be interpreted as bigint values. This feature is still somewhat broken and thus not enabled by default. If you want to try it anyway, define USE_BIGINT_PRAGMA in lexer.ll at build time. 2011-10-13 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: Make the --eager, --required and --(no)defined pragmas accept any kind of symbol (not just an identifier), so that they can be applied to special operator symbols. No checking is done on the syntax, and a following line comment (// ...) must be set off from the symbol with whitespace. Note that any of these options implicitly declare the symbol if necessary, so if the symbol is to be declared using special properties such as fixity, that declaration must come *before* any pragma involving the symbol. * lexer.ll, interpreter.cc: Implemented --defined and --nodefined pragmas, as discussed on the mailing list. These take a global function symbol as parameter and mark or unmark it as a "defined" symbol, respectively. If a symbol that is marked as "defined" is defined as a function in the Pure program, then the compiler generates special code which ensures that each application of the function actually reduces to something else. Otherwise, instead of returning a normal form, a 'failed_match' exception will be raised. The --defined status of a function can be changed at any time, causing the function to be recompiled on the fly. The --nodefined pragma restores the default behaviour of returning a normal form upon failure. 2011-10-12 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: Add a special case rule so that double constants like 1e100 are properly recognized. * lib/regex.pure: Move regex support into a separate module which can be loaded independently of the system module. * lib/system.pure: Improved printf/scanf implementation which supports GMP/MPFR (%Zd, %Rg) conversions. 2011-10-11 Albert Graef <Dr.Graef@t-online.de> * Makefile.in: Bump runtime library version. * configure.ac: Add MPFR checks. * runtime.cc/h: Add GMP/MPFR printf/scanf support to the runtime. 2011-10-08 Albert Graef <Dr.Graef@t-online.de> * lib/pointers.pure: Moved pointer arithmetic into separate module, as suggested by Max Wolf. 2011-10-05 Albert Graef <Dr.Graef@t-online.de> * interpreter.hh, runtime.cc/h, printer.cc: Add light-weight support for pretty printing of tagged pointer values. This adds another way to hook into the expression pretty-printer in order to define custom unparsing of opaque C/C++ data structures from C/C++ code. 2011-10-04 Albert Graef <Dr.Graef@t-online.de> * lexer.ll: Add support for --warn/--nowarn pragmas, as suggested by Peter Summerland. 2011-09-11 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc/hh: Implement __locals__ as a built-in macro (rather than subsituting it away at code generation time) so that proper lambda lifting is performed on the local function references. 2011-09-06 Albert Graef <Dr.Graef@t-online.de> * etc/pure-mode.el.in: Changed the keybindings for the block traversal commands to use the Meta prefix. (This used to be Ctrl+Shift, but this interferes with the standard binding for the shifted word movement commands for selecting ranges of text in cua mode.) Also, pure-mark-defun (C-M-h) and pure-send-defun (C-c C-f) now allow you to mark or send an inline code section (%< ... %>), if point is at or inside such a section. 2011-06-05 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (macspecial): Add a __namespace__ macro which expands to the current namespace at the point of the call, as a string. 2011-05-27 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc (LoadFaustDSP): Add dsp::samplingFreq interface routine to retrieve the sampling rate of a Faust dsp. * runtime.cc (faust_method): Add primitive to retrieve the interface operations of a Faust dsp. This is also available under the name dsp_fun in lib/faustui.pure. 2011-05-13 Albert Graef <Dr.Graef@t-online.de> * configure.ac: Bump version number. * runtime.cc (clear_lasterr): Add a routine to have lasterr() cleared. * interpreter.cc/hh (interpreter::logging), runtime.cc/h (pure_start_logging, pure_stop_logging): Add a logging facility for error messages and warnings from the compiler. This is still experimental and not exposed in the Pure library right now. It is intended to be used by modules compiling Pure source, so that they can have messages logged and later retrieved with lasterr(), in order to display the messages to the user in any desired way. 2011-04-17 Albert Graef <Dr.Graef@t-online.de> * interpreter.cc: Experimental __func__ builtin which yields the lexically enclosing function (named closure or lambda). As suggested by Saptarshi Guha on the mailing list. 2011-04-01 Albert Graef <Dr.Graef@t-online.de> * configure.ac, interpreter.cc/hh: LLVM 3.0(svn) compatibility fixes. |
||
---|---|---|
.. | ||
DESCR | ||
distinfo | ||
Makefile | ||
PLIST |