2010-04-16  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-demo.c (muesli_demo_main): Include string.h, and
	change a reference to a field that has been renamed, that I didn't
	see because of an ifdef that got selected out on my systems.

2010-04-11  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-internal.h: Export more converters.

	* src/muesli-tcl.c (muesli_to_tcl): Collected up converter into a
	function.

2010-04-10  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-python.c (muesli_to_python): Handle malloced strings
	as well as const strings.

	* src/muesli-guile.c (muesli_to_guile): Handle malloced strings as
	well as const strings.

	* src/muesli-lua.c (muesli_to_lua_push): Handle malloced strings
	as well as const strings.

	* src/muesli.c (muesli_map_interpreter_names): New function, to
	call a callback on each interpreter / language name pair.  Meant
	for scripting languages to be able to construct a list of
	scripting languages.

	* configure.ac: Rename config.h to muesli-config.h, so it can be
	found unambiguously when included in evaluators defined outside
	the muesli directory (for example, in Emacs).

2010-04-08  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-stack-bytecode.c (stack_bytecode_eval): Defined
	digits in the instruction stream to build a number.
	(stack_bytecode_eval): Fill in success code if given.
	(stack_bytecode_disassemble): Added stack code disassembler.
	(stack_bytecode_eval): Added missing "break" at end of variable
	block lookup.

2010-04-05  John Sturdy  <john.sturdy@ul.ie>

	* Makefile.am (AM_CFLAGS): Add the directory in which ruby.h was found.

	* configure.ac (RUBY): Added detection of ruby.h

	* src/muesli.h (enum): Separate string type for malloced strings.

	* src/muesli-guile.c: Rename current_interface to guile_interface.

	* src/muesli-ulsiod.c: rename current_interface to
	ulsiod_interface.

	* src/muesli.c (muesli_register_evaluators): Remove variables
	holding each evaluator; putting them in the evaluator list is
	enough.  A few distinguished evaluators retain these variables,
	for example, "pipe", which is used to build the external Lisp and
	Haskell evaluators.

	* src/muesli.h (muesli_value_t): Remove "const" from the char*
	return type; they will often be malloced copies.

	* src/muesli.c (muesli_eval_to_string): New function.  This group
	of functions try to convert whatever result the fragment returns
	into a specific type.
	(muesli_eval_to_float): New function.
	(muesli_eval_to_int): New function.
	(muesli_eval_to_boolean): New function.

2010-03-30  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli.c (muesli_print_interpreter_names): Return number of
	interpreters found.  Also, allow NULL stream, in which case it
	just counts the interpreters.  And pass in a couple of pointers to
	int, for returning the length of the longest language and
	implementation names.

2010-03-24  John Sturdy  <john.sturdy@ul.ie>

	* configure.ac: Add termcap to required libraries (because
	readline wants it, because lua wants it).

2010-03-23  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-demo.c (parse_args): Add command line option to list
	languages and exit.

	* src/muesli.c (muesli_make_evaluator_interface and others):
	Separate language and implementation names.
	(muesli_malloc_copy_string): Don't try to copy NULL, just return
	it.
	(muesli_define_variant_evaluator): Take copies of the strings
	passed in.

	* src/muesli.h (evaluator_interface): Add more comments; add more
	slots for describing array syntax.
	(evaluator_interface): Separate language and implementation names.

2010-03-22  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-demo.c (muesli_demo_main): Added "language" command.

2010-03-20  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-ulsiod.c (muesli_siod_get_parameters): Used
	representation conversion function, instead of inline.

	* src/muesli.c (muesli_malloc_copy_string_n): New function.

	* src/muesli-tcl.c (tcl_evaluator_init): Add extensions
	conditionally.

	* src/muesli-slang.c (slang_evaluator_init): Add extensions
	conditionally.

	* src/muesli-javascript.c (javascript_evaluator_init): Add
	extensions conditionally.

	* src/muesli-custom.c (custom_evaluator_init): Add extensions
	conditionally.

	* src/muesli-octave.cpp (octave_evaluator_init): Add extensions
	conditionally.

	* src/muesli-lua.c (lua_evaluator_init): Made adding the
	extensions obey the flags provided.

	* src/muesli.c (muesli_register_evaluators): Add arguments for
	arguments of application's `main'.  Put them in statics.
	(muesli_make_evaluator_interface): Put application `main' args
	into each evaluator structure.

2010-03-18  John Sturdy  <john.sturdy@ul.ie>

	* configure.ac: Comment out tests for languages that aren't ready.

2010-03-17  John Sturdy  <john.sturdy@ul.ie>

	* configure.ac: Added test for the R programming language.

2010-03-14  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-ruby.c: New file.

2010-03-13  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-slang.c (muesli_slang_pop_value): Move value handling
	into a separate function.
	(muesli_slang_push_value): Move value handling into a separate
	function.

	* src/muesli-ulsiod.c (muesli_to_siod): Put conversion of result
	into a function of its own.

	* src/muesli.c: Allow preferences for when more than one evaluator
	offers to handle a filename extension.

	* src/muesli-guile.c: New file.

	* src/muesli.c: Add evaluator for Guile.

2010-03-09  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-stack-bytecode.c (stack_bytecode_eval): Added ';' as
	an explicit no-op.  Also '%' for modulus.

2010-03-05  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-javascript.c (javascript_to_muesli): Move this out
	into a function of its own.

2010-03-03  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-python.c (python_evaluator_shutdown): Added shutdown
	function.

	* src/muesli-tcl.c (tcl_eval_string): Examine the Tcl result for
	various possible types in turn.
	(muesli_to_tcl_result): Pass back error codes.

2010-02-28  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-python.c (python_eval_string): Use Py_eval_input
	instead of Py_file_input, and it works!

2010-02-27  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-python.c (python_eval_string): Trying various things
	to make the python caller work.  Putting Py_file_input instead of
	0 for the "start" stops the crashing, but there's no useful result
	returned.

2010-02-24  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli.c (muesli_register_evaluators): Add pipe variants,
	for "lisp" and "haskell".

	* src/muesli-tcl.c (tcl_evaluator_init): Move a couple of
	GrEvo-specific things out to GrEvo.

	* src/muesli-lua.c (lua_evaluator_init): Move a couple of
	GrEvo-specific things out to GrEvo.

	* src/muesli-javascript.c (muesli_to_javascript): General tidying
	up, and added a return type converter function.

2010-02-22  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-demo.c (main): Split main, as needed for Guile.

	* config.h.in: Add flag for Guile.

	* src/muesli-ulsiod.c (siod_evaluator_init): Add extensions conditionally.

	* src/muesli.c (muesli_register_evaluators): Pass in flags word
	for which extensions to add.

	* src/muesli.h (MUESLI_EXTENSION_PARAMETER_BLOCK): Define some bit
	fields for which extensions to add.

	* src/muesli-tcl.c (tcl_evaluator_init): Allow for being passed no
	options.

	* src/muesli-tcc.c (begin_tcc_instance): Allow for being passed no
	options.

	* src/muesli-slang.c (slang_evaluator_init): Allow for being
	passed no options.

	* src/muesli-siod.c (siod_app_init): Allow for being
	passed no options.

	* src/muesli-python.c (python_evaluator_init): Allow for being
	passed no options.

	* src/muesli-perl.c (perl_load_file): Allow for being passed no
	options.

	* src/muesli-octave.cpp (octave_evaluator_init): Allow for being
	passed no options.

	* src/muesli-lua.c (lua_evaluator_init): Allow for being
	passed no options.

	* src/muesli-javascript.c (javascript_evaluator_init): Allow for
	being passed no options.

	* src/muesli-custom.c (custom_evaluator_init): Allow for being
	passed no options.

	* src/muesli-ulsiod.c (siod_evaluator_init): Allow for being
	passed no options.

	* Makefile.am (AM_CFLAGS): Found I was using the wrong variable
	for flags -- CPPFLAGS are for the preprocessor.  Since it's run as
	part of the same program, it worked anyway.

2010-02-21  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-demo.c (main): Add REPL command to load a file.
	(parse_args): Add command-line command to load a file.

2010-02-15  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli.h (muesli_value_t): Define a type containing a value
	and its type, and use this throughout.

2010-02-14  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-tests.c (muesli_test_evaluators): Separate out into a
	new source file.

	* src/muesli.c (muesli_split_args): bug fixes: was overwriting
	first argv slot with second, and ending with rubbish in the last;
	and wasn't writing the final null of the final arg.

	* src/muesli-demo.c (muesli_internal_tests): Added function for
	internal (non-language) tests.

	* src/muesli-exec.c (exec_eval_string): Pass in the
	underlying_program to the argv preparation function.

	* src/muesli.c (muesli_split_args): Added an extra arg to allow
	the first element to be passed in separately, so that the program
	name for exec can come either from the evaluand string or from the
	underlying_program slot in the evaluator structure.

	* src/muesli.h (evaluator_interface): Added function for shutting
	an evaluator down.

	* src/muesli-javascript.c (javascript_evaluator_init): Added
	native functions in initializer.

2010-02-13  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-lua.c (muesli_lua_custom_eval_function): Sort out
	some return types.

	* src/muesli.c (muesli_malloc_copy_string): Function to take a
	copy of a string; use this throughout where appropriate.

2010-02-11  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-octave.cpp: Completed interface to Octave.

2010-02-07  John C G Sturdy  <john.sturdy@ul.ie>

	* src/muesli-octave.cpp (octave_eval_string): Attempt at filling
	in the Octave interface.

2010-02-04  John C G Sturdy  <john.sturdy@ul.ie>

	* doc/muesli.texi (Installation): Explained some fixes that you
	may need to do in your installed library directories to get the
	configure script to detect all the installed languages.

2010-02-01  John C G Sturdy  <john.sturdy@ul.ie>

	* src/muesli-slang.c (slang_setup): New file.

	* src/muesli-demo.c (long_options_data): New program, new file.

	* src/muesli.h (evaluator_interface): Rename "pipe" things to
	"underlying" as they might be useful for other evaluators later.

	* src/muesli.c (muesli_get_evaluator_by_extension): Initialize
	evaluator before returning it.

2010-01-29  John C G Sturdy  <john.sturdy@ul.ie>

	* src/muesli.c (muesli_set_parameter): Pass in calling language
	name as a parameter, so that if setting a code fragment parameter,
	the application parameter mechanism can arrange for it to be
	interpreted in the language from which it was set.

2010-01-25  John Sturdy  <john.sturdy@ul.ie>

	* src/muesli-python.c: New file.

2009-12-30  John C G Sturdy  <john.sturdy@ul.ie>

	* src/muesli.h (evaluator_interface): Added array_separator field,
	containing the element separator for array literals.

2009-12-10  John C G Sturdy  <john.sturdy@ul.ie>

	* src/muesli-lua.c (lua_eval_bytecode_string): New function, based
	on the corresponding one in muesli-ulsiod.c.
	(lua_eval_in_language): New function, based on the corresponding
	one in muesli-ulsiod.c.

2009-10-30  John C G Sturdy  <john.sturdy@ul.ie>

	* src/minti-custom.c (custom_eval_0): Added eval_0 function.

2009-09-29  John C G Sturdy  <john.sturdy@ul.ie>

	* src/minti-ulsiod.c (siod_evaluator_init): Tidy up use of argv,
	and allow heap size to be specified as a number.

2009-09-04  John C G Sturdy  <john.sturdy@ul.ie>

	* src/minti.c (evaluator_repl): Added makeshift REPL for languages
	that don't provide one.
	(print_interpreter_names): Provided version number as possible
	printf arg.

2009-09-03  John Sturdy  <john.sturdy@ul.ie>

	* src/minti-lua.c (custom_eval_function_lua): Check custom
	evaluator was found; correct number of results returned in case of
	error.

	* src/minti.c (get_named_evaluator): Correct call to initializer.
	(get_named_evaluator): Add option to exit if evaluator not found,
	as applications will probably often want to do this.

2009-08-27  John C G Sturdy  <john.sturdy@ul.ie>

	* src/mint-stack-bytecode.cpp (stack_bytecode_eval): Write back
	the latest sp into the state at any kind of return.
	(stack_bytecode_eval): A couple more uses of a temporary variable
	to convince the compiler of what I mean about sequencing.

	* src/mint-exec.cpp (exec_eval_string): Closed some more fds, as
	it was leaking them.

2009-08-26  John C G Sturdy  <john.sturdy@ul.ie>

	* src/mint-int.cpp (test_evaluator): extended the evaluator test
	system to time them as well; and also re-arranged the test system
	to be data-driven.

2009-08-25  John C G Sturdy  <john.sturdy@ul.ie>

	* src/mint-int.h: Project created, by splitting out the
	interpreter interface from GrEvo.


