"ChangeLog"

# NOTE: the latest CVS tag must appear in the first 10 lines of this ChangeLog.
# This version tag is used in building "cvstag.h" for version identification.

2009-04-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-17:
	  Patched to support FSF's g++-4.4, released last week!
		Various uninitialized warnings in some trace ctors, 
		some invalid private accesses in Object/state_manager.h.
	  scripts/init_hackt.*.in: replace LTDL_LIBRARY_PATH with
		AC_SUBST'd @LTDL_SHLIBPATH_VAR@, which is DYLD_LIBRARY_PATH
		on Darwin, this was broken since the guile re-work -83-02.
	  SPEC registry: replaced util::qmap with std::map.


2009-04-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-16-b:
	  No real source revision.
	  Added lib/scripts/prsimrc_alter_instance.awk
	  Updated test/Make.test-vpi


2009-04-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-16:
	  Improvement of compiler diagnostic when identifier conflicts
		during definition declaration.  (Thanks, Tadeo!)
		Test case added: namespace/067.
	  vpi_prsim.cc: enabled TIME_64 when (SIZEOF_LONG >= 8)
		to prevent time overflow issues from PLI.
		Only affects 64b platforms.  No test case added. [!]


2009-04-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-15:
	  prsim: new diagnostic commands
		status-interference, status-weak-interference --
		print current set of nodes with (weak)-interfering fanins.
		Documented and tested, amended old test cases.


2009-04-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-14:
	  prsim: new diagnostic commands:
		unused-nodes -- nodes with no fanin, no fanout
		unknown-undriven-fanin -- nodes with fanins, but not pulling
		unknown-fanout -- X nodes with fanout
	  Documented and tested with new test cases.


2009-04-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-13:
	  hacobjdump: added option to automatically call allocation phase
	  hacinstdump: automatically allocate globals


2009-03-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-12:
	  hacprsim bug: node fanout was mistakenly reporting 
		invariants in some cases.
		Re-defined node_is_used to only count fanout to rules,
		not invariants.  


2009-03-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-11:
	  hacprsim: "unstable fatal" and "interference fatal" were not
		exiting with nonzero status as advertised before, 
		it would just break, but allow normal continuation.
		This is now fixed, with test cases added.


2009-03-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-10:
	  hacprsim: tab-completion minor fix: handle shell commmands
		beginning with '!' specially, defaulting to filename compl.
	  finish implementation of treating invariant failures as fatal
		errors by throwing/catching exceptions.  
		This happens to be needed when we want a PLI co-simulation
		to terminate as soon as the first error occurs.  
		Test case added.


	* HACKT-00-01-04-main-00-83-09:
	  hacprsim: backtrace command now takes optional value
		argument to choose what value to query, if the user
		does not want to use the default current value.  
		Documented, tested, test case added.


2009-03-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-08:
	  Fixed MAJOR performance regression from branch merge 
		-footprint-02-05.  footprint_manager::insert() and lookup()
		were calling expensive construction and allocations
		of temporary footprints for set operations, 
		causing 10x to 20x slowdown.  :(
		Fixed by using partial construction trick *hack* alert.


2009-03-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-07:
	  hacprsim: fanin/fanout now report channel sinks and sources
		in fanin/fanout feedback.  Added new test case.


2009-03-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-06-merged-footprint-02-05:
	  Branch merge of footprint rework/re-organization.
		Improved type diagnostics in hacprsim.
		Will lead to improved type information in API.


2009-03-08  	Carlos Tadeo Ortega Otero  	<cto3@csl.cornell.edu>	

	* HACKT-00-01-04-main-00-83-05:
	  Allows production rule attributes that used 'preal' constant 
		values to take 'pint' constant values (since pint is a 
		subset of preal).  The modification was done because a 
		problem arised when loadcap attribute rejected pint 
		attributes during the creation step on the 
		simulation process.


2009-03-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-04-footprint-02-05:
	  Cleaned up parser/instref.cc.
	  End of branch, merge to trunk.


	* HACKT-00-01-04-main-00-83-04-footprint-02-04:
	  parser/instref.cc: listing members now only shows names
		of members that are actually instantiated.
		This affects prsim's 'ls' command.
		Test cases added and minor updates.
	  tab-completion now only reports as candidates names of
		instances that were actually instantiated, using
		the process's footprint instead of scopespace for names.
	  Finish branch with some minor cleanup.


	* HACKT-00-01-04-main-00-83-04-footprint-02-03:
	  parser/instref.cc: parse_name_to_what(), parse_name_to_members(),
		now print a process's complete type where applicable.
		Test case added: prsim/relaxed-a*.
	  Next: work on 'ls'


2009-03-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-04-footprint-02-02-c:
	  Perm'd FOOTPRINT_OWNER_DEF.  srcdir-only tag.


	* HACKT-00-01-04-main-00-83-04-footprint-02-02-b:
	  Perm'd FOOTPRINT_HAS_PARAMS.  srcdir-only tag.


2009-03-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-04-footprint-02-02:
	  Added owner-definition member to footprint, opening the doors
		to more meaningful queries on footprints.  
		Object binary unaffected because pointer is
		reconstructed instead of stored.
		No regressions.
	  Remainder of branch will just be cleanup.


	* HACKT-00-01-04-main-00-83-04-footprint-02-01-c:
	  Code clarification: footprint_manager no longer uses operator[], 
		but explicit lookup/insert methods to make it clear
		where modification is intended.  Regression tested.


2009-03-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-04-footprint-02-01-b:
	  srcdir tag only:
	  Permanently change footprint_manager map to use count_ptr.


	* HACKT-00-01-04-main-00-83-04-footprint-02-01:
	  Mini-branch for reworking footprint structure so that it contains
		template actual parameter information, along with
		back-link to source definition.  
	  Object binary format has been slightly reordered and restructured!
		Tests updated accordingly (create-dumps).
	  In this revision: footprint_map now implemented as a set using
		specialized comparator for unique comparison of the
		param-key member for the purposes of sorting.  
		Simplified by using a count_ptr of footprint in map.
	  Force default construction of temporary footprint
		in many unroll functions to use explicit tag argument
		for clarity of intent.  
	  Next: embed definition_base pointer in each footprint.


2009-02-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-04:
	  hacprsim new commands for diagnostics:
		getall . -- now works as one might expect
		getlocal proc -- prints state of all nodes publicly reachable
			in PROC, i.e. those allocated by PROC.
		getports proc -- prints state of all public port nodes of 
			process instance PROC.
		Documented, test cases added.  
	  Implemented some helper alias visitor functions, for visiting
		reachable public ports of a process alias:
		port_visitor, bool_port_collector.
	  Used them in new functions in parser/instref.cc.


2009-02-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-03:
	  prsim/tab-completion: no longer auto-append space character
		after a successful instance name completion.
		When displaying candidate matches, prune the 
		common hierarchical prefix (readline).


2009-02-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-02:
	  Complete rework of guile/hackt programs and modules.
		Replaced compiled executables hacguile and hacchpsimguile
		with guile-loadable plug-ins.  
		hacguile/hacchpsimguile are now install-only wrapper scripts
		that emulate what the old executables did.
		New modules are hackt-guile.la, hackt-chpsim-guile.la, 
		the preferred way to load them is through guile's
		command: (use-modules (hackt hackt-primitives)) which
		call (load-extension ...).
		Added new primitives to hac:load-object, and
			hac:init-chpsim-state, for public API.
	  NOTE: this effectively replaces the run-time dependency
		from libguile to the guile executable.  So be it.
	  Updated init_hackt.{sh,csh} to append LTDL_LIBRARY_PATH
		for finding plug-ins at run-time for guile.
	  Regression test suite still passes with guile.


2009-02-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-01:
	  Makefile.am: .ii rules added -x c++ flag to preprocessing command.
	  Added lexyacc_test test program to try to debug flex-issue.
		Test program uses unhacked version of scanner/parser code.
	  Tested on powerpc-apple-darwin8.
		Noticed some prsim test differences in trace files, 
		which need to be investigated, not considered regression
		because it's a new feature.


2009-02-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-83-00:
	  Massive cleanup of simulator command registration and reuse code.
		Moved templates and macros into sim/command_macros.{h,tcc},
		intergrated command_builtin.cc into command_common.cc
		and removed all command_builtin*.
		Made declaration macros more consistent and organized.
		Clear distinction between stateless and module-only classes.
		prsim/chpsim command files updated and simplified
		declarations and instantiations.
		Better reuse of static const strings inheriting
		from generic base classes.  
	  Also minor patches for standard conformance compiling with
		g++-4.3.0, such as missing includes.


2009-02-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-99:
	  hacprsim: instance name tab-completion, partially implemented, 
		semi-usable, generator function in parser/instref.cc.  
		Shortcomings reported in bug database.
		Wrapped readline initialization into a wrapper class
			of SIM::command_registry<>::readline_init.
		SIM::CommandBase now has _completer function pointer, 
			that defaults to null_completer, and can be
			override by template specialization, using the
			OVERRIDE_DEFAULT_COMPLETER macro defined in
			sim/command_completion.h.
	  See util/ChangeLog for: util/copy_if.h: added transform_if algo.
	  TODO: cleanup: convert some command_common classes to use
		a module-only wrapper, analogous to the stateless wrapper.


2009-02-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-98:
	  hacobjdump: implemented command-line arguments to turn sections
		off/on individually.
	  hacinstdump: now just a wrapper script around hacobjdump.


	* HACKT-00-01-04-main-00-82-97:
	  prsim, chpsim: command-line tab-completion (readline only)


2009-02-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-96-merged-prsim-13-03:
	  Branch merge.  Honor node attributes allow_{,weak_}interference,
		and honor rule attribute unstable in hacprsim.
		Minor improvement to instability diagnostic.
		Tested, documented.


2009-02-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-95-prsim-13-03:
	  prsim: diagnostic improvement:
		print the rule that is unstable when reporting instability.
		Test cases updated trivially accordingly.  
	  End of branch.


	* HACKT-00-01-04-main-00-82-95-prsim-13-02:
	  Implemented pre-rule unstable policy in prsim.
		Rules flagged 'unstab' will not trigger run-time diagnostics
		about instability and will silently dequeue events, 
		as if unstable-dequeue were only applied to that rule.
	  Minor bug fix (prsim, chpsim): assert-queue and assertn-queue 
		should have checked for *live* events in the queue, 
		not counting killed events.  (chpsim unaffected)
	  Added bunch of new test cases.
	  Next: print rules during instability diagnostics.


	* HACKT-00-01-04-main-00-82-95-prsim-13-01:
	  Branch for adding node/rule attribute support for hacprsim, 
		namely for fine-grain interference and instability
		diagnostic control.
	  This revision: implemented allow_interference and 
		allow_weak_interference node attributes, which suppress
		the respective warnings on nodes, so if any two fanin
		rules interfere, warning will be silenced, but
		node will still go to X.  


2009-02-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-94-d:
	  Source-dir only tag: perm'd PRSIM_INVARIANT_RULES.


	* HACKT-00-01-04-main-00-82-94-c:
	  Source-dir only tag: perm'd PRSIM_RULE_DIRECTION.


	* HACKT-00-01-04-main-00-82-94-b:
	  Source-dir only tag: perm'd PRSIM_INDIRECT_EXPRESSION_MAP, 
		which originated from the first round of scalability
		work that made use of hierarchical process graphs, 
		separated from process atate.  


	* HACKT-00-01-04-main-00-82-94:
	  Cleaning up prsim source: factored out unique_process_subgraph
		and process_sim_state into separate modules.  
		Next: perm-ing some flags.  


2009-02-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-93:
	  prsim, chpsim: added 'repeat' command to repeat a command a
		fixed number of times.  Minimally tested, documented.  


2009-01-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-92-merged-prsim-12-09:
	  Merged prsim tracing branch.  We can now record trace files for
		every event in hacprsim, to be used for further analysis.
		minor fixes to autosave, improved documentation, new
		test support for trace files.  
		prsim, chpsim: new -r option to startup with new trace file.
	  Next branch for prsim will be for guile API development.


2009-01-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90-prsim-12-09:
	  prsim trace files now contain initial state and final state
		checkpoints, just array of node values.
		This is needed in case tracing starts with non-X values.
		The final state just makes it easier to play the simulation
		in reverse without additional work.
		Tests updated accordingly.  
	  Idea: could intersperse checkpoints periodically for 
		random jumps in trace history.
	  Closing branch, leave trace compaction for later.


	* HACKT-00-01-04-main-00-82-90-prsim-12-08:
	  No source revision, test infrastructure updates, and added
		a ton of trace dump tests to regression suite.
		Found some crash issues with a few cornercases to fix.
	  Next: store initial and final checkpoints in the trace file, 
		because trace analysis and replay mechanisms need to
		know boundary values.  
	  TODO: possibly compact events' node index if deducible.


2009-01-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90-prsim-12-07:
	  No real source revision, inline texinfo documentation added.
	  Tests: chpsim tests updated to take advantage of automatic
		tracking and checkpointing.  
	  Branch nearly done, little more prsim-trace testing to go.


	* HACKT-00-01-04-main-00-82-90-prsim-12-06:
	  chpsim, prsim: added -r file command-line option to automatically
		save a trace file from startup (documented),
		fixed -a (autosave) option to actually take effect.
		warn if trying to open trace file for writing, when one
			is already opened. 
	  prsim: on initialize/reset, close trace stream.  
		on exit, close trace stream before taking checkpoint.
		When taking checkpoint, mask out autotrace info.
		When loading checkpoint, preserve current autosave, 
			and close opened trace stream.
		no longer save the name of autocheckpoint in checkpoint.
	  See also test/ChangeLog.


2009-01-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90-prsim-12-05:
	  By default, prsim trace dump always prints verbose information
		in extra columns: expanded production rule or node name
		if event was not due to a rule (user, or channel).  
	  Trace now crams a node's old and new value into the node_value
		field, which will come in handy for reverse playback!
	  Next: attempt to deduce node and/or value from rule for
		more compact storage.


	* HACKT-00-01-04-main-00-82-90-prsim-12-04:
	  Added prsim trace commands, preliminary testing looks reasonable.
		Factored trace command code from sim/chpsim/Command.cc to 
		sim/command_common.{tcc,h} for re-use.
		Honor the trace-flush-interval value set by user.  
		Documented.  
	  Next: enhancements for human readability.


2009-01-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90-prsim-12-03:
	  Completed draft of prsim trace-file generation code, 
		yet untested, but regression free.
		Event-prsim.h: extended cause_type to track the 
			critical event trace index.
		State-prsim.{h,cc}: pass around the new event_cause_type
			containing critical trace index.  
	  Next: adding interpreter commands and testing...


2009-01-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-91:
	  CRITICAL bug fix: ACX-PR-2552
		more node attributes were wrongly dropped.
		Fix: port_alias_tracker::...shortest_alias():
			after finalize_canonicalize(), needed one more
			pass of update_direction_flags() for each alias.
		Test cases added: parser/prs/iscomb-27*


2009-01-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90-prsim-12-02:
	  Factored out reusable code to SIM::trace_manager_base class from 
		SIM::CHPSIM::TraceManager.


2009-01-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90-prsim-12-01:
	  This branch is for developing prsim trace file support.
	  Initial revision: factored out some reusable code from
		chpsim trace implementation into sim/trace_common.{h,cc}.


2009-01-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-90:
	  CRITICAL (very latent) bug fix: 
		node attributes and properties were not always being 
		propagated up instance hierarchy, ACX-PR-2513.
		Fix: (port_alias_tracker) find port alias in a set, instead 
			of assuming that the first element is a 
			representative port alias.
		Test cases added: parser/prs/iscomb-{25,26}*


2009-01-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-89:
	  prsim: seed48 is now wiped by the 'reset' command (but not the
		'initialize' command).  Documented and tested.


2009-01-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-88:
	  Added some newly requested node attributes "isrvc1", "isrvc2", 
		"isrvc3" for assisting LVS with special keeper configurations.
	  Documented, added one test case.


2008-12-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-87:
	  prsim: implemented active-low data-rails in channels, 
		designated with '~' in ~d:2 of channel declaration command.
	  Documented and tested.


2008-12-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-86:
	  prsim: implemented acknowledgeless channels, which can still be
		watched, logged, and value-checked (expect), but
		cannot be sinks/sources.  (ACX-PR-1998)
		Documented, and tested.  


2008-12-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-85-b:
	  prsim: channel code cleanup reorganize command code to
		use apply and apply-all functions.  


	* HACKT-00-01-04-main-00-82-85:
	  prsim: invariants command now accepts bool/nodes as argument, 
		printing invariants that a node participates in.
		Documented and tested.


	* HACKT-00-01-04-main-00-82-84:
	  prsim: weak-rules command now takes 'hide' or 'show' to control
		whether or not weak rules are displayed in queries.
	  prsim: added 'confirm' and 'noconfirm' commands to turn on/off
		verbose confirmations of asserts.
	  Documented, test cases added.  


2008-12-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-83:
	  Several hacprsim reference parse bugs fixed:
		ACX-PR-1484: ISE on invalid array ref
		ACX-PR-1708: ISE on invalid reference for 'ls'
		ACX-PR-2310: ls accepted invalid reference
		ACX-PR-2400: ISE on invalid reference to getall
	  parsers' yyerror() and yyfreestacks() code factored out into
		parser/yyerror.cc and parser/yyfreestacks.cc for 
		reusability and maintainability.
		yyerror(), yyfreestacks(): 
			fix to check for (yychar == 0) as alternative EOF.


2008-12-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-82:
	  prsim: horrendous bug in printing subexpressions, somehow 
		exposed only when -ffold-literal optimization turned on.
		Fixed, added test cases.  (ACX-PR-2335)


	* HACKT-00-01-04-main-00-82-81:
	  Revert patch for revision -00-82-74, no longer allow
		conditional spec directives in deftypes.
	  Test cases updated.


2008-12-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-80:
	  New helper program: hacinstdump, prints instance type list/table
		that is normally at the tail end of hacobjdump.


	* HACKT-00-01-04-main-00-82-79:
	  CRITICAL bug: prsim channel expects were failing to advance
		on 'X' (don't care) values, thereby missing errors
		after the first X.  (Fixed.)
	  new command: channel-assert-value-queue -- check the state
		of channel sourcing/expecting a finite value sequence.
	  Documented, tested.


	* HACKT-00-01-04-main-00-82-78:
	  CRITICAL bug: weak rules were not being filtered out properly,
		meaning that some tests were mistakenly simulating with
		weak-rules on when the mode was off.  
	  Few test updates were non-trivial, some differences in 
		weak-interference warnings need to be resolved.
		Consider this patch medium-risk.  


2008-12-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-77:
	  vpi-prsim bug fix: watching of individual nodes now works
		as expected, was masked out by breakpoint 
		due to interaction with $from_prsim (ACX-PR-2166).
	  Test cases added.


2008-12-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-76:
	  prsim: new command 'channel-timing' to set per-channel
		timing policies {global, after, random}
	  Test cases updated (channel-show), and new test cases added.


2008-12-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-75:
	  hacprsim: new channel commands heed/ignore {,-all}.
		'stop/resume' now only affects the response of channels, while
		'ignore/heed' dictates whether or not values are logged
			or checked for the a duration.  
	  Test cases updated, new test cases added, documented.  


2008-12-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-74:
	  hackt-parse.yy.in: datatype and channel definitions now can take the 
		same definition body syntax as general process definitions.
		Rationale: allow conditional spec bodies.
		Update: this may be reverted pending some discussion.


2008-12-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-73:
	  prsim diagnostic improvement, invariant failures print the
		process to which the failing invariant belongs.
	  Invariant test cases updated accordingly.  


2008-12-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-72:
	  Print more informative diagnostic when scheduling invalid event
		in the past, b/c VCS cosimulation trips it a lot.  
	  hacprsim: Initial markup for simplifying allocation pass.
	  NOTE: discovered new bug with hacprsim -O1, reduced tests
		quarantined in test/prsim/non-CMOS-*.  


2008-12-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-71:
	  Critical vpi-prsim.cc bug fix:
		prsim nodes that were connected to multiple Verilog node
		fanouts via $from_prsim() were not properly propagating
		value to all fanouts because the vpiHandleMap only
		registered single handles.  Fix: maintain set of handles.
	  Test case added to test/prsim/vpi/oscillator-fanout.


2008-12-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-70:
	  No real source revision, updated flex scripts to accommodate
		flex-2.5.35's skeleton, but running haco still crashes
		a horrible death, same as with 2.5.33.


	* HACKT-00-01-04-main-00-82-69:
	  prsim: added -D time command line option to override the
		default after delay.
	  vpi-prsim: new command $prsim_default_after(<Int>) to 
		override default after delay in co-simulation, 
		use this command *before* loading the object file.
	  Documented, and tested.


2008-11-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-68:
	  prsim/vpi fix: prsim_sync command is now deprecated, 
		every $prsim_cmd automatically performs queue
		synchronization conservatively, relieving the user
		of the burden of having to manually prsim_sync
		around commands that modify the event_queue.  
		One test cases fixed, others updated to remove
		deprecated calls to $prsim_sync.  
	  sim/command_registry.{h,tcc}: new flag 'external_cosimulation'
		to prevent user from accidentally issuing forbidden
		commands during co-simulation, e.g. ones that advance
		the simulation time or alter breakpoints.  


2008-11-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-67:
	  Added production rule attributes: after_min, after_max
		which specify bounds on random delays in hacprsim.
		Rule structure grew because of storing these new 
		delay values per rule (memstats tests updated).  
	  Docmented.  Minimally tested. 


2008-11-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-66:
	  State-prsim.cc rewrote one line to work around g++-3.3 ICE-on-valid.
	  No real source revision, just configury and testing.


2008-11-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-65-merged-prsim-11-05:
	  Branch merge: prsim:
		Improved user control over error handling policies, 
		and a bug fix in top-level spec handling.

2008-11-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-62-prsim-11-05:
	  Critical bug fix: top-level spec attributes (footprint) were not 
		being applied in hacprsim!  Had to adjust a few test cases.  :S
	  Now share error codes between simulators.
	  chpsim state now has assert_fail_policy, but no mutator.
	  prsim: now honor error handling policies, and convert
		error codes to the interpreter.
	  Documented and tested new features.  
	  Branch is ready to merge.


2008-11-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-64-a:
	  Minor fixes: explicit template instantiations to link properly
		with aggressive inlining optimizations (-O3).


	* HACKT-00-01-04-main-00-82-64:
	  portability with gcc4 series:
		don't use unordered_map unless hash_map is deprecated.
		prefer std::ordered_map over tr1.
		re-validated on powerpc-apple-darwin8-gcc-4.0.1.


2008-11-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-62-prsim-11-04:
	  prsim: added State members for new error-handling policies:
		assert_fail, channel_expect_fail, excl_check_fail.
		Implemented commands to alter these policies.
		Moved error_policy_enum to enums.h.
		replaced State::inspect_exception with 
			virtual step_exception::inspect().


	* HACKT-00-01-04-main-00-82-62-prsim-11-03:
	  Changed internal State::break_type to match error_policy_enum.
		Diagnostic methods now return more meaningful value.
		Due to error encoding, the highest ranked error policy
		value returned will dictate the action to be taken
		by the command interpreter.  No regressions in tests.  
	  Next: propagate and make use of theses error policy return values.


2008-11-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-62-prsim-11-02:
	  Handle new error codes returned by interpreter.
		Implemented 'interpret' command: ability to open subshell
		that is interactive, in the middle of non-interactive script.
	  Next: add commands to alter error policies.


2008-11-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-61-gcc43-04:
	  scopespace: replaced hash_map/unordered_map with just std::map.
		Updated 1 enum test case.  
	  No important differences (only memstats).
	  Now validates against -std=c++0x.
	  Ready to merge.


2008-11-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-61-gcc43-03:
	  Compiles! Fixed some undefined references (template instantiation)
		and majority of regression tests pass, some minor diffs.
		This was tested with g++-4.3.2, no c++0x mode.  
	  Need to test against c++0x mode.


2008-11-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-62-prsim-11-01-a:
	  Branch for generalizing the error-handling policies of hacprsim.
	  Added new error-code in State-prsim.cc:
		ERROR_INTERACTIVE, ERROR_FATAL.


2008-11-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-62:
	  vpi-prsim.cc: _run_prsim now catches uncaught exceptions
		and destroys globals before re-throwing to terminate.
		This allows automatic checkpoints to be taken in time.
		step/exclusion violations exceptions are now caught
		and reported prior to termination.  
	  No test case added.


2008-11-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-61-gcc43-02:
	  Few more casts for conversion warnings.
	  Prefer using tr1::unordered_map over hash_map where available.


2008-11-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-61-gcc43-01:
	  Branch for gcc-4.3 patching.
		Initial revision does not compile yet.
	  Added missing include headers.
	  Updated for stricter ISO conformance, and for c++0x conformance.
	  Explicit casts on some integer conversions.
	  Eliminate use of deprecated std::auto_ptr.
	  Conditionally replaced hash_map with unordered_map, if found.


2008-11-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-61:
	  prsim: fanin/fanout now print the processes to which each
		rule belongs, making process tracing much easier!
	  Test expects updated accordingly.


2008-11-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-60:
	  prsim, chpsim: autosave checkpoint command-line option (-a)
		now requires a name of file to save.
		interpreter's 'autosave' command now takes an optional
		file name argument, defaulting to something if omitted.
	  Test updated.


2008-11-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-59-b:
	  Perm'd PRSIM_CHANNEL_VALIDITY.  (src only tag)


	* HACKT-00-01-04-main-00-82-59-a:
	  Perm'd PRSIM_CHANNEL_DONT_CARES.  (src only tag)


	* HACKT-00-01-04-main-00-82-59:
	  hacprsim: direction bit moved from expression to rule structure, 
		where it makes more sense.  
	  Minor fix in dumping dot-structures, missing index 0 expr.


2008-11-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-58:
	  hacprsim bug-fix: 'rules' command implementation crashed.
	  Test case added.


2008-11-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-57:
	  enhancement: module::__allocate_unique(), now calls 
		state_manager::optimize_pools() to conver list_vector
		into a monolithic array for constant-time accesses.
	  see also util/ChangeLog -- for util::list_vector additions


2008-11-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-56:
	  Massive cleanup: perm'd ENABLE_RELAXED_TEMPLATE_PARAMETERS, 
		removing about 1000 lines of deprecated code.


	* HACKT-00-01-04-main-00-82-55:
	  Critical bug fix: (ACX-PR-1611)
		internal aliases were not being replayed for relaxed-typed
			instances, resulting in missing aliases.
		Fixed, added test cases.


2008-11-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-54:
	  Minor clean-up: PRS_footprint_expr_pool_type is now
		based on plain std::vector instead of util::list_vector.
	  prsim: perm'd PRSIM_CHANNEL_SUPPORT.


2008-11-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-53:
	  Implemented diagnostic commands in hacprsim:
		rules[-verbose] proc -- print all rules belonging to process
		allrules[-verbose] -- print ALL rules in simulation
		invariants[-verbose] proc -- invariants belonging to process
		allinvariants[-verbose] -- print ALL invariants in simulation
	  parser/instref.cc: added parse_process_to_index()
	  State-prsim.cc: provide dump_canonical_node_name() and
		dump_canonical_process_name() for direct use of ostream&.
	  Documented and tested.


	* HACKT-00-01-04-main-00-82-52:
	  Fix: expr-alloc of invariant exprs was broken in last rev. :(
	  prsim command: check-invariants -- checks ALL invariants NOW
	  Added more invariant tests.


2008-11-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-51:
	  Implemented generalized run-time invariant checking in hacprsim.
		devel flag: PRSIM_INVARIANT_RULES
		error-handling is similar to that of unstable, interference
	  new commands:
		invariant-fail [mode]
		invariant-unknown [mode]
			These set the error-handling policy upon violation, 
			or possible violation of invariants.  
	  Documented and tested minimally, added new test cases.  
	  Next: replace rule_map with some ordered map, 
		add a 'check-all-invariants' prsim command.


2008-11-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-50-merged-prsim-10-20:
	  Major branch merge: Scalability rework in hacprsim
	  Replaced flat-world model of production rules with hierarchical 
		process view of rules, and separate structure from state, 
		so that each unique process can reuse its subgraph of 
		expressions/nodes/rules with ALL instance of the same type, 
		thus dramatically reducing memory usage, improving scalability.
		Improved memory usage reporting for data collection.  
		Performance has degraded 4% to 8%, with *no*
			optimization effort -- only after profiling.  
	  Further improvements to memory to be researched later.
		Hierarchical structuring of rules will further enable 
		development of per-process and per-rule control, as well
		as global rule enumeration, and a notion of ownership, 
		i.e. each rule can be identified with its owning process.  
	  Testing: zero functional regressions, tests were updated to account
		for only formatting differences in the reporting of 
		fanins and fanouts: fanout no longer reports branches of
		rules of which the queried node does not directly participate.
		prsim expression dumps no longer print monolithic graphs, 
		but rather one graph per unique type.  
	  This branch has been brought to you by Fang's spare time.


2008-11-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-20:
	  Added more memory usage statistics of the global state manager.
	  tests: minor VPI installcheck environment/PATH fixes.


2008-11-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-19:
	  Bug fix: ExprAlloc assert failed on wrong invariant
		on local node index in pass-gate macros.
		Fixed and added test casees: prsim/bad-pass-gate-*


	* HACKT-00-01-04-main-00-82-32-prsim-10-18:
	  Final formatting fix, now properly count the number of fanins
		per node, categorized by pull-direction and strength, 
		which fixes the remaining formatting differences 
		in test/lib, on why*-verbose analyses.  
	  For convenience, implemented state_manager::get_bool_frame_map()
	  Added Object/common/frame_map.h for typedef.  
	  Some general clean-up.
	  Ready to merge to trunk.  


	* HACKT-00-01-04-main-00-82-32-prsim-10-17:
	  Bug fix: forgot to register new unique types with 
		process_footprint_map during ExprAlloc, oops!
	  Wrote memory statistics for new structures, 'memstats' command.
	  Redeclared packed vs. aligned attributes for memory-critical
		expr and rule structs (huge difference).  
	  Many remaining regression tests difference re-validated (all format), 
		test-expects have been updated.  (in test/prsim, parser/prs)
		Few remaining differences in why*-verbose in lib/.


2008-11-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-16-b: (srcdir only tag)
	  fanin/fanout-get printing now shows the overall root pull for 
		every rule b/c rules are no longer grouped by pull direction
		and weakness, they are ordered by process fanin.  


	* HACKT-00-01-04-main-00-82-32-prsim-10-16-a: (srcdir only tag)
	  Better printing of rules, further reducing test differences.


	* HACKT-00-01-04-main-00-82-32-prsim-10-16:
	  Cleaned up evaluate_return_type struct, removed unused refs
		to __scratch_expr_trace.
	  Added unique_process_subgraph::check_node(), from check_structure().
	  TODO: memstats, fanin/out-get print-info, 
		print rule attributes properly at rule, update tests.


	* HACKT-00-01-04-main-00-82-32-prsim-10-15-c: (srcdir only tag)
	  Confined uses of process_expr_id_map to lookup and setup functions.
		Defined PRSIM_SEPARATE_PROCESS_EXPR_MAP for later exploration
		between two implementation, small tradeoff memory/performance.
	  Next simplify some process_sim_state call sites, involving
		local/global indices.


2008-11-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-15-b: (srcdir only tag)
	  Eliminated process_first_expr_map, 
		folded into process_sim_state-base.


	* HACKT-00-01-04-main-00-82-32-prsim-10-15-a: (srcdir only tag)
	  Moved many methods of unique_process_subgraph into 
		process_sim_state, where it makes more sense, 
		thereby simplifying many function calls.  


	* HACKT-00-01-04-main-00-82-32-prsim-10-15:
	  Eliminated process_type_map, folded type reference into
		process_sim_state union member, type_ref.
		More clean-up transformations to come...


	* HACKT-00-01-04-main-00-82-32-prsim-10-14:
	  Cleaned up implementation of bool frame lookup without having
		to always check for special case pid=0 (top-level), 
		simplifying code, making less error prone.  
		Added some global_entry methods to help with this.
		Could re-factor out repetitive calls to get_frame_map still...
	  Only test differences in fanin/fanout print formatting.


2008-10-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-13:
	  Fixed bug with propagating wrong pull-state to root, as returned
		by ::evaluate(), fixing a few tests with unstable-dequeue.
	  Fixed bug with improper searching through top-level nodes with
		wrong frame map.  Considering a better fix next...


2008-10-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-49:
	  Implemented invariant expressions from front-end through
		hflat back-end, hacprsim not yet supported.
		Texinfo (lang) documented and tested.
		Object format is updated b/c new member of PRS::footprint.


2008-10-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-48:
	  No source revision, just lots of prsim documentation, especially
		for VPI, and also added examples +scripts of working
		with hierarchical co-simulation with VCS (huge!).  
		Texinfo documented in sim/prsim/vpi-prsim.cc
	  Examples directories are now separated by $(host) to avoid
		architecture-specific collisions.  


2008-10-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-12+:
	  Fixed formatting of State::__root_why analysis.  
	  Known bug remaining: some tests outputs have dropped subtrees
		of why-analysis, a few unstable diagnostics differ, 
		see test/prsim/prsimrcdiffs.


2008-10-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-12:
	  prsim: fix get_delay_up/dn assertion, but would still like to
		automatically find the appropriate delay based on fanin-get
		eventually, however this is low priority.
		No regression tests crash anymore!
		Only differences seem to be in fanin/fanout printing
		and why-analysis feedback (68 test failures).


2008-10-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-47:
	  prsim: Initial implementation of shared-validity channels enabled,
		and tested.
	  Next: more testing and documentation.


2008-10-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-46:
	  Critical bug fix: node attributes were not being properly applied
		to subinstances (ports) of freshly instantiated processes
		because process_connect_policy did not yet exist.
		Implemented port_alias_tracker::export_alias_properties()
		Test cases added to parser/prs.  


2008-10-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-45:
	  debug diagnostics: print alias attributes in hierarchical
		collection dumps.  (updated some expect dumps w/ attributes)
	  code re-org.: subinstance_manager now a base class (was member)
		of substructure_alias_base<true>, simplifying code, 
		reducing unnecessary useless forwarding wrappers.  


2008-10-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-44:
	  By popular demand, hacprsim: channel-source on empty args
		or empty file is now downgraded from error to warning.
		channel-source-args: value arguments now optional.
		An empty-valued sourced channel will reset properly
		upon channel-reset; the data-rails will turn neutral.
		No 1/0 activity on the acknowledge will take the data rails
		out of neutral, however, an X *may* cause data-rails 
		to become X, the exact behavior remains unspecified.
	  Command documentation updated, test cases added.  


	* HACKT-00-01-04-main-00-82-43:
	  parser: allow attributes on member references
	  minor bug fixes:
		bool_connection_policy: implement connection_flag_setter
		port_alias_tracker: print attributes of port aliases
	  Test cases added.
	  New known bug: attributes not properly propagated hierarchically,
		will be fixed next.


2008-10-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-42+:
	  Aded hflat option to split instance/node attributes to one-per-line
		instead of grouping all of them on one line before.
	  Documented and tested.


2008-10-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-11+:
	  More fixes: faulty rule index returned (bad lookup), 
		bad fanin/fanout printing fixed.
	  Next bug: get_delay fails when no valid rule_index is provided, 
		so must search for an ON rule, and take minimum delay.
		This causes many remaining crashes, e.g. State::unset_node().


2008-10-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-11:
	  Tons of simple little bugs fixed, still much more to go.
		Many easy bugs related to incorrect assertions due to
		local indexing vs. global indexing.  
	  Most regression tests in prsim/ still die on 
		crashes and assert fails.  


2008-10-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-10:
	  Ton of minor fixes during debugging, successfully simulated
		one hierarchical inverter (parser/prs/inv-14)!!!
		Details: expression allocation fixes, initialization fixes, 
		local-global translation fixes, expression propagation fixes,
		structural coherence fixes, dump-strict enhancements
		For now, node_fanin array is vector (bigger than valarray)
		Moved evaluation_return_type to State-prsim.cc
		faninout_struct_type no longer nested in unique_process_subgf.
	  Next: continue debugging bigger tests until no regressions, 
		accurate memory statistics.
	  cleanup: remove State::__scratch_expr_trace, 
		pass evaluate_return_type by ref instead of returning copy


2008-10-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-42:
	  hflat prsim: print pass-gate sizes if sizes requested.
		Suppress pass-gate expansion if options dictate it.  
		Added test cases.


	* HACKT-00-01-04-main-00-82-41:
	  hflat now prints node attributes with new flag 
		-fnode-attributes (default false), 
		which is folded into the 'java-lvs' preset (main/cflat.cc).
		Use "hflat java-lvs" for convenience. 
	  cflat_prs_printer now calls print attributes on nodes, 
		node name quotation honors flag.  
	  Bug fix: instance_attribute::unroll now operates on the
		*canonical* node referenced by an alias.  
	  Documented new hflat option, bunch of test cases added.
	  This concludes the initial implementation of node attributes
		for hflat.  


2008-10-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-40:
	  iscomb, autokeeper node attributes arguments now optional, 
		default unspecified values to 1.
	  Cleaned up, simplified implementation of visitor idiom in the 
		unrolled instance hierarchy (state_manager, global_entry,...)
		state_manager now forwards accecpt calls through global entries.
		CHP footprint visitation pushed down into CHP::chp_visitor.
	  Implemented global_entry::dump_attributes for object dump
		printing of attributes win unrolled footprints and alloc state.
		Also implemented bool_connect_policy::dump_attributes for this
		and extended state_instance::dump with this.
	  Generalized cflat_visitor::instance_exception.
	  TODO: implement bool attribute using cflat_prs_printer override.


2008-10-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-39:
	  Completed middle-end work on instance attributes, and registries.  
		Only bools have any attributes right now.  
	  Factored lang/attribute_visitor_entry from 
		lang/PRS_attribute_registry for reuse.  
	  Compile-time now rejects unknown attributes.  
	  Documented texinfo for instance attributes!
	  TODO: add printing for attribute values in object dumps for debug,
		add a pass to hflat to visit unique instances and 
		print unique nodes/instances with non-default attributes, 
		actually test propagation of bool attributes.  


2008-10-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-09:
	  Turned on PRSIM_INDIRECT_EXPRESSION_MAP! (beginning to debug...)
		ExprAlloc visitors adjusted to use local node indices
			where appropriate, properly presize the local node
			fanin/out structure array by footprint_frame, 
			fixed ::link_node_to_root_expr()
		State-prsim: distinguish FIRST_VALID_GLOBAL_* indices
			from FIRST_VALID_LOCAL_* indices, 
			removed false nonzero assertion checks
	  Basic inverter process passes structural testing!
		Then the events don't quite work right yet...


2008-10-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-38:
	  Implemented much of middle-end for instance attributes, 
		around entity::instance_attribute class template, 
		and instantiated in Object/unroll/instantiation_statement.cc.
	  Factored out generic_attribute from PRS::attribute for reuse.
	  bools' (nodes) aliases now contain a field for attribute
		and direction flags, thus changing the object binary format.  
		Test cases have been trivially updated (create-objdump).
		bool (node) attributes, for now, are boolean-valued and
			have sticky-non-default values that will be propagated
			up the instance hierarchices via bitwise OR.  
	  connection_policy class renamed and no longer template <bool>, 
		affected traits-classes have been updated.
	  TODO: populate per-meta-type attribute registries, equipped with
		symbol/value-check calls and alias modification functions.  


2008-10-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-37:
	  language attributes work:
		hflat/prsim rule attributes always_random, unstab, weak
			now don't require a parameter, default=1.
			updated parser accordingly.  
		new iskeeper rule attribute indicates that rule
			is part of a staticizer, printed in hflat, 
			and ignored completely by prsim.  
		moved generic attribute value checks to separate module.
		prsim: ExprAlloc: now conditionally process rule
			depending on iskeeper attribute, and honor default
			values of the above attributes.
		Test cases added.  Documented. 


2008-09-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-08:
	  It finally compiles! (but will probably crash and burn)
		Finished remaining functions, branch is completely untested.
		Most importantly, implemented root_expr_why* functions, 
		albeit mostly copy-pasted from original expr_why functions.
	  Next: ground-up testing... PRSIM_INDIRECT_EXPRESSION_MAP -> 1.


2008-09-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-07:
	  prsim: added State::translate_to_global_node (local -> global index)
		re-implemented many recursive traversals, including dump, 
		fanin, fanout, and why-diagnostics.  
		Note: rule printing for new impl. will differ from prev.


2008-09-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-36:
	  lexer critical bug fix: eliminated invalid NULLCOMMENT pattern,
		which caused multiple /**/ comments on a single
		line to be munged together into one comment, oops!


2008-08-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-35:
	  prsim: dump_node_fanout output node value is printed incorrectly, 
		because I printed the value of the input node, ooops.
		Thanks to Lily Tam for finding this one!
		One test case updated in prsim test suite.  


2008-08-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-06:
	  prsim: Started migrating some structure tests to the
		unique_process_subgraph class, including helper functions.
		Renamed process_expr_map to global_expr_process_id_map.
		Factored out lookup_global_expr_process(expr-id).
		More clean up of get_pull() calls.
	  Next: rewrite some recursive diagnostics, splitting off 
		process-local functions from global lookups.  


2008-08-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-05:
	  prsim: Converted use of uchars for node values over to value_enum, 
		for clarity, and caught some suspicious code!
		Also cleaned up some uses of pull_enum, 
		eliminating confusing conversions to/from char.
		Hope compiler is smart enough to use size uchar, 
		given value range.  
	  Next: structure integrity checks, recursive diagnostics
		with PRSIM_INDIRECT_EXPRESSION_MAP=1.
		

2008-08-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-04:
	  More simple conversions of node pull-states using new fanin struct.
	  Next: work on structure integrity checks and recursive diagnostics.


2008-08-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-03:
	  Moved enumerations to "enums.h" outside of structs, cleaned-up.
	  unique_process_subgraph now has local node fanin/out summaries,
		much like Node-struct, which are populated during 
		type-pass (once per type) in ExprAlloc.
		These summaries come into play because nodes now list
		processes as fanins, since they are not needed during
		simulation, only diagnostics.   
	  State::get_pull: many short-lived expr_indicies have been
		removed, which will simplify get_pull() replacement.
		Except, recursive diagnostics (why*) were untouched, 
		need to be rewritten differently.
	  PRSIM_INDIRECT_EXPRESSION_MAP doesn't fully compile yet.


2008-08-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-02:
	  Continued restructuring of prsim structures.  
	  PRSIM_INDIRECT_EXPRESSION_MAP doesn't fully compile yet.
	  Next: replacing nodes' pull-up/dn structure with pseudo
		expression for taking OR-combinations of rules, essentially
		folding OR expression into node.
		Rationale: simplify structural transition
		Consider using a *gasp* union for memory efficiency.  
	

2008-07-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-34:
	  haco now has option (-p) to accept input from stdin
		instead of a named file.
	  hacpp assumes stdin is used when there is no argument.  
	  Documented and tested with new test cases in basic/.  


2008-07-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-33:
	  util::string_to_num(): auto-detect hexadecimal numbers


2008-07-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32-prsim-10-01:
	  Branch for the promised restructuring of prsim data structures
		to reduce memory at the expense of some performance.
		Before branch is complete, should benchmark difference.
		Goal-flag: PRSIM_INDIRECT_EXPRESSIONS_MAP
	  This initial revision has factored out some data structures
		in preparation for per-type lookup structures.  
		State-prsim.h: factored out unique_process_subgraph
		ExprAlloc.cc: use unique_process_subgraph members


2008-07-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-32:
	  Added 'mode paranoid' to break on weak-interf./instab.
	  Updated hacprsim documentation in dox/ (texinfo).


2008-06-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-31:
	  No source revision, minor lib/ updates only.  (use defchan, deftype)
		See lib/ChangeLog.


2008-06-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-30:
	  prsim: new commands to play with event queue
		'reschedule' <node>: set to absolute time
		'reschedule-now' <node>: force to head of event queue
		'reschedule-from-now' <node>: set to time in future
		'reschedule-relative' <node>: change relative to pending time
		'execute' <node>: move to head of event queue and execute now!
	  Documented, and added test cases.


2008-06-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-29:
	  prsim: handle channel events non-QDI behavior (instability)
		honor unstable-dequeue if set.  
		Fixes ISE-on-invalid bug.
		Test cases added.


2008-06-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-28:
	  prsim: who-newline command to separate names by line, readability.
		Tested, documentation updated. 


2008-06-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-27:
	  prsim: added why command variants with depth limitations.
		Tested, documented.  


2008-06-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-26:
	  Fixed ICE-on-invalid bug in error recovery in parsers:
		return value of YYSTYPE should not clobber yylval
		in the event of a syntax error (check yychar).
		Validated against yacc and bison-2.0.
		Test cases added: basic/026,027,028.


	* HACKT-00-01-04-main-00-82-25:
	  prsim: State-prsim.cc: removed invalid assert in
		flush_pending_queue(), where there can be multiple 
		pending interference events in pending queue.
		Problem originated from original prsim, 
		now fixed by Rajit in prs.c -r1.32.  (Thanks!)
		Reduced from test case submitted by Tadeo.  


2008-06-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-24+:
	  No source revision, just added some prsim test cases
		for checking exclusivity in channel types.  


2008-06-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-24:
	  No source revision, just Makefile maintainence, 
		and distcheck release bump.


2008-05-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-23:
	  util/ChangeLog: object binary format is now checked and diagnosed. 


	* HACKT-00-01-04-main-00-82-22:
	  sim/prsim/ExprAlloc.cc: when taking OR combination of rules 
		on the same node, check for size-limit before appending 
		subtrees to OR-expressions.  Fallback to allocating
		new OR expression when it is exceeded.  
		Thus immediate top-level fanin of node is unlimited.  
		Fixes ACX-PR-1400.  Reduced test cases added.  


2008-05-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-21+:
	  simulator command interpreters can now accept "   #foo" comments.
		Tested: test/prsim/command-08.prsimrc
	  prsim: memstats now reports memory usage of rule_map, 
		which can be significant.


2008-05-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-21:
	  Quick parser update to support prs literal parameter flavors.
	  1 test case added.  


2008-05-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-20:
	  Update error message on failed assignment at unroll-time.
	  New test case, others updated accordingly.  


2008-05-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-19:
	  Critical ICE-on-valid/reject-valid bug fix:
		failed range conversion in front-end, fixed.
		Test cases added: parser/array/065,066.  Gracias, Tadeo.


2008-05-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-18:
	  Minor error message update from parser on bad prs identifier.


2008-05-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-17:
	  Bug fix with always_random: wasn't taking effect before.
	  1 test case added.


2008-05-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-16:
	  No source revision, only scheme additions (scm/ChangeLog)
	  Many tests updated (more information) and added to test/chpsim.  


2008-04-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-15:
	  Minor grammar fix with CHP expressions.  Added to test suite.  
	  More chpsim-guile test cases for thesis stuff.  
		See also scm/ChangeLog for new scheme routines.  


2008-04-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-14:
	  No source revision, only scheme and scm updates (scm/ChangeLog).
	  chpsim test library added new int-sources.
		Added new gcd tests in new directory (thesis case studies)


2008-04-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-13:
	  prsim, chpsim: new command 'ls' to list all immediate subinstances
		of the named instance (really, its type).
		Should make debugging and navigating foreign circuits
		much easier and tester-friendly.  
	  Documented and tested.  


2008-04-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-12:
	  prsim: perm'd switch PRSIM_SEPARATE_CAUSE_NODE_DIRECTION, 
		which has been stable since 2006.  (cleaner!)


2008-04-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-11:
	  Language: now support implicit pint to preal conversion
		in mixed arithmetic expressions (parameters only, 
		not applied to nonmeta values)
	  One test updated from expect-fail to pass, few new small tests added.


2008-03-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-10:
	  No source revision, just testing VPI under 64b native mode.


2008-03-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-09-merged-parser-06-07:
	  Minor branch merge: improvements in lexer/parser 
		includes top-level configury.
			better version reporting.
		no longer creates temporary files for scanning strings.
		much lexer code common to all scanners has been
			factored out into separate file, now shared.
		validated against flex 2.5.4, 2.5.31 (gracias, Tadeo!)
	  General portability improvements: (POSIX)
		use printf over echo -n, project-wide Makefile.am's


2008-03-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-08:
	  Preliminary parser support for instance attributes, as discussed
		with Rajit and Virantha.  "inst-ref @[key=value;...];"
	  grammar: provisional instance attributes, 
		CHP,PRS attributes reomved in favor of common, generic
		attribute construct (ease of maintainence).
			much copy-paste code 
		AST/{CHP,PRS}.* updated accordingly.
	  AST/attribute.{h,cc}: common attribute struct
	  AST/instance.cc: on attribute processing, 
		currently just ignores with a finish-me message.
	  Not yet properly documented... :(


2008-03-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-07-merged-ACT-03-59:
	  Massive branch merge of -ACT-03.
	  Language (mostly for ACT compatbility):
		PRS now accepts optional 3rd parameter in rule literal
			to represent transistor type (faked), same with 
			passn/passp macros.  
		send/recv/set/get bodies now optional.
	  prsim:
		support for weak rules, stronger than no-drive, but
			overtaken by non-weak (normal) rules.  
			Complicates code A LOT -- needs a complete rewrite.
			Much tested with sync/async mixed circuits.  
		channel commands, at long last, not compatible with
			original prsim's commands (by Clint)
		VPI interface for mixing with verilog simulators, 
			mostly ripped from reference prsim (by Rajit).
		oodles of new commands:
			cause/nocause -- turn of cause reporting
			ehco-commands -- print command that just executed
			unknown-inputs[-fanout], unkonwn-outputs --
				further filtered versions of "status X"
			step-event -- step 1 event, not 1 time-step
		new recursive diagnostics:
			why[-verbose] -- what is driving node to current value?
			why-not[-verbose] -- what is value-change waiting for?
			why-x[-verbose] -- why is node X?
		improved exception handling
		-t <type> command option added
		numerous non-regression fixes along the way
		stronger internal consistency checking
	cflat:
		fix: honor top-level spec directives
		-t <type> now handles top-level parameters correctly
		new option to report best/worst/typical rule strengths
			based on path conductance.
	documentation: all of the above, new features documented.  
	util library critical fixes (util/ChangeLog)


2008-03-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-05-parser-06-07:
	  {lexer,parser}/*options.h: change cpp conditional to use defined()
		on USING_{YACC,BISON}, easier to generate from configure.
	  Elsewhere in project: Makefile maintainence, use printf vs. echo -n
	  Now validated against flex 2.5.31 too.
	  End of branch.


2008-03-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-59:
	  Latent bug fix in commands with -t <type> option not
		being able to reference top-level parameters, now fixed.  
		Resolution: unroll top-level parameters before unrolling
		per-type instance hierarchy.  This makes values available, 
		and correctly overshadows globals with local parameters.  
	  Added new test cases.  
	  Branch now closed.  


2008-03-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-05-parser-06-06:
	  Reasonable attempt to acommodate flex 2.5.33, but as was before
		this branch, it still crashes, so it shall remain on the 
		blacklist (described in README).
		May consider investigating, this is the branch to do it.
	  Makefile.am: use hand-written lexer/flex_common_marker.awk instead 
		of lexer/flex_common_marker.patch, which is harder to
		apply across flex variants.  AWK AWK AWK!
	  lexer/flex_lexer_state.h: added yy_flex_debug member.
	  No regressions.  


	* HACKT-00-01-04-main-00-82-05-parser-06-05:
	  Makefile.am: replaced yyparse prototype sed-hack with updated
		parameter (flex::lexer_state&).  
		Validated against yacc skeleton 1.14, from *-apple-darwin8.  
	  TODO: validate branch against other flex versions.


2008-03-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-05-parser-06-04:
	  lexer/flex_common_marker.patch:
		updated to soften patch match (flex 2.5.4, patch 2.5.9)
		also validated against older bison-1.875.
	  Makefile.am: added dependencies on patch file.


2008-03-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-58:
	  Added commands 'cause' and 'nocause' to hide causality tracking, 
		motivated by need to test randomized data on channels.
	  Documented, now used in some tests.  
	  Minor update to util/numeric/random.h.


2008-03-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-57:
	  prsim critical bug fix:
		channel was not properly maintaining state when finite
		value sequecne was exhausted, fixed.  
		Resulted in nasty memory corruption.  
	  prsim: initialize and reset now also aply to channel-manager.
		Upon initialize, channels retain configuration, but streams
		are closed, while values are retained, but restarted.  
		Upon reset, completely clobber all registered channel, 
		as if freshly started.  
	  Added bunch of new test cases for initialize/reset, 
		updated some old tests to account for random values.  
	  Initialization also documented.  
	  Tested and committed from powerpc-apple-darwin8


2008-03-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-56:
	  prsim+VPI:
		__advance_prsim (kernel of _run_prsim) now breaks
		out of loop as soon as registered breakpoint is encountered, 
		to return control back to VCS as eagerly.  
		This didn't seem to change the behavior visibly, though
		it seems more correct...
		At end of _run_prsim, only conditionally register self-
			callback if there is actually a pending event, 
			now in reregister_next_callback().  
		$prsim_sync (new): catch up prsim to VCS's current time, 
			executing past breakpoints as necessary.
		__advance_prsim(): change vpiPureTransportDelay to
			vpiNoDelay to take effects immediately, and to
			support multiple successive breakpoints during sync.  
	  Added several new test cases, including demonstration of
		mixing VPI with channel features, using $prsim_sync.
		Documented in new section in dox/prsim/cosim.texi.


2008-03-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-55:
	  prsim: implemented 'why-x-verbose'
		'why-x' now prints a bit more instances of "already visited"
		because expressions are walked, and not just collecting 
		unique X nodes, which reveals logic.  
		Also supported through channels.  
	  No test cases added, but all old test cases with 'why-x' 
		now also call 'why-x-verbose', and updated accordingly.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-54:
	  prsim/State-prsim.cc: cleanups and additions, refactoring code
		to make more use of function pointers.  
		Added more generalized queries for input/output states.
	  prsim channels: source/sink configured channels now count
		as effective 'fanin' and 'fanouts' in queries.
	  New command: unknown-outputs: report X nodes that have no
		fanout, useful when they are going into environment.
		Documented, tested.  


2008-03-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-53:
	  prsim: Functional-style clean-ups will make it easier to pass 
		around arbitary functions.


	* HACKT-00-01-04-main-00-82-02-ACT-03-52:
	  prsim critical bug fix: assessment of interference should
		ignore when weak-rule tries to fight against strong rule, 
		similar patch to -03-45 on this branch.  
		Initially reported by Ilya Ganusov, reduced by Fang.  
	  Fixed with test case prsim/crash-bug-01.


	* HACKT-00-01-04-main-00-82-02-ACT-03-51:
	  prsim channel bug fix: was mistakenly enqueueing multiple
		X events from sink, where latter X's should have been vacuous.
		Initially reported by Ilya Ganusov, reduced by Fang.  
	  Fixed with test case prsim/channel-test-a-19.


2008-03-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-05-parser-06-03:
	  Mission accomplished.
	  Deleted rotten pasta code with opening temporary files for
		parsing, by replacing with string-initialized lexer-state.
		Wish code could be this elegant more often.  
		Net reduction in line count!
		Files: parser/instref.cc parser/type.cc


	* HACKT-00-01-04-main-00-82-05-parser-06-02:
	  Makefile.am purge-ry, parser surgery, config patchery.
	  configury: test minimalist example to determine properties
		of the chosen parser generator.
		e.g. no longer need MINIMUM_BOGOSITY token
		Now have a proper yacc skeleton version string.
	  Makefile.am: clean-up, better script re-use for maintainence, 
		eliminating eye-sore duplicates
	  lexer/*.ll: remove all references to yywrap and *_at_eof.
	  parser/*.yy.in: eliminate MINIMUM_BOGOSITY placeholder, 
		replace MAXUMIN_BOGOSITY with YYMAXTOKEN, aliases
		to YYMAXUTOK for bison.
	  Next: rewrite string parse calls.


2008-03-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-05-parser-06-01:
	  New branch for invasive changes to lexers.  
	  Extract code common to all generated lexers with 
		lexer/flex_common_marker.patch and sed script.
	  Makefile.am: some clean-up and re-use of script variables.
		Generation of lexer/*-real.cc updated to use new patch.
		NOTE: all lexer/*-lex-real.cc use the same patch!
	  util/lang/lexyacc/lexyacc-prefix-generator.awk:
		new option -v keep_common to NOT transform selected
		symbols to make use of common-extracted functions.
	  lexer/*.ll: replace *_at_eof() with flex_lexer_state::at_eof().
	  automatically extract lexer/flex_buffer_state.h struct definition.
	  Next: continued clean-up and also re-write of string parse calls.
	  TODO: this is going to need re-validation against flex 2.5.31+


2008-03-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-50:
	  No real source revision.
	  Updated documentation and help for chpsim -t and -T, 
		also support chpsim-flags in test suite.  
	  Branch is in good standing, expect merge this week.


2008-02-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-49:
	  prsim: added command line option -t <type> to instantiate
		one instance of the named type as the top-level, in place
		of the source's original top-level instances.
	  Documented and tested.  
	  TODO: also patch chpsim likewise.


	* HACKT-00-01-04-main-00-82-02-ACT-03-48:
	  util-only addition: deep_copy (util/ChangeLog)


2008-02-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-47:
	  By request, prsim channel commands:
		channel-source-args[-loop]
		channel-expect-args[-loop]
		instead of reading a file, take values from interpreted
			command line arguments directly (avoids files).
		Now old source/expect commands are called source-file[-loop], 
			and expect-file[-loop] respectively, but the old
			names will continue to work (but consider deprecated).
		Some internal functions were renamed to avoid ambiguity.
		Documented and tested.
	  Moved step_exception to sim/prsim/Exception.h for better
		extensibility, relocated channel_exception to Channel-prsim.h
		where it makes sense.  
	  prsim: State::step now uses automatic queue-flushing via RAII
		for exception safety and consistency enforcing, 
		when exception can come from within (e.g. channel-assert fail).


2008-02-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-46:
	  prsim channel features: input files for channel values may now 
		contain 'X's, which are interpreted as don't cares for
		channel-expect, and as treated as random values for 
		channel-source.  
	  Documented (dox/prsim/commands.texi) and tested.  
	  Few tests updated to remove non-determinstic output (random).


2008-02-28	Sandra Jackson		<sandra@csl.cornell.edu>

	* HACKT-00-01-04-main-00-82-06:
	  always_random: added option to set the delay of one rule to 
		always be random 
	  modified the distribution of the random function


2008-02-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-05:
	  No source revision, only test suite update to skip certain
		tests during non-VPATH build.  (only test/lexer affected)


2008-02-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-45:
	  prsim weak-rules critical bug fix: false positive diagnostic on
		a weak rule cutting off (from X->0) should not impact
		a pending non-weak event (in the same direction).  
		Symptom: wrongly X'd out events on non-instability.
		Fixed, with reduced test case added.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-44:
	  No source revision, updating tests to support installcheck
		tests on VPI/prsim, improved testing harness.


2008-02-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-43:
	  Extended vpi-prsim with prsim_set/prsim_get commands, as an 
		additional interface, even though $prsim_cmd suffices. 
	  prsim/vpi-prsim.cc: replace memory-leaking strdup calls with
		properly constructed std::strings.  
	  Added first vpi test to test suite, only enabled if configure
		detects vcs (verilog compiler).


	* HACKT-00-01-04-main-00-82-02-ACT-03-42:
	  Improved 'why-x' diagnostic output, test-cases updated.


2008-02-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-41:
	  prsim: added 'why' and 'why-verbose' commands to recursively
		query why a signal is being driven to its value.
		Minor fix in recusion logic for why-not.  
	  Documented, extended previous tests, and added new ones.  


2008-02-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-40-merged-prsim-09-13:
	  Branch merge: added prsim channel command support.
		and there was much rejoicing...
		Documented and reasonably tested.
		Replaced event-queue priority_queue (heap) with multiset, for 
		FCFS ordering and precise checkpoint reconstructibility.


2008-02-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-13:
	  ALERT: potentially risky change: replaces priority queue (heap) with
		multiset/map, to guarantee FCFS ordering among identically
		timestamped events, and to preserve sane ordering
		upon reconstruction from checkpoint.  
		There is no measurable performance difference from
		running the lib/ tests.
	  Several test cases in prsim/ updated to reflect re-orderings.  
		This fixes non-regression test failures that were sensitive
		to queue ordering in checkpoint reconstruction.
	  Even though this affects chpsim, there were no visible changes
		in the chpsim test suite.
	  This patch should apply (and reversible) on trunk as well.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-12:
	  Minor patch, channel-show now indicates whether channel is watched.
	  Two new failures in test suite (prsim,lib) are NOT regressions;
		they expose a latent problem with precise queue reconstruction
		using any heap structure.  Next revision will change this
		over to red-black-tree (multimap) which is order-preserving, 
		with first-come-first-serve tie-breakers.  
	  Added bunch of channel feature test cases.  


2008-02-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-11:
	  Bug fixes in prsim::channel:
		Now always set all data rails (high and low) in response
			to acknoledge on sources.  
		Now advancing data immediate after using data for
			settting channel data rails.  
	  Extended why-not[-verbose] and why-x to search through channels!
	  Few new test cases.  


2008-02-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-10:
	  Changed channel::value_type to unsigned type to facilitate
		translation of values to and from data rails.
		Note, however that ldiv() and family still operates on
		signed integers, so values may still be limited to 
		unsigned::max (warning issued).  
	  Tested random-sources (fix) and channel-stop with channel-resume.
		Added new tests cases for these.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-09:
	  Failed attempt to fix compile-option-forwarding (-C "...")
		attributed to getopt() being non-reentrant.  
		What a load of crap.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-08:
	  Implemented random sources (channel-rsource), untested. 
	  Texinfo-documented all channel commands.  


2008-02-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-07:
	  Ironed out most initial bugs for channel commands, now works!
		Call it beta.
	  Now advance value in sequence *after* data rails are reset.
		Resume no longer auto-advances.
	  Fixed exception throw specifier for State::step,cycle, 
		which otherwise, prevented channel_exception from
		being caught (channel value assert-fail).
	  Added bunch of source/sink/log/expect test cases.


	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-06:
	  channel::resume() now properly spawns events from the environment
		of sources and sink.
	  Channel sink initial tests are working.
	  Added test case with manual toggling of data rails.


2008-02-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-04:
	  Minor bug-fix [accepts-invalid]: array nonmeta expressions
		were not being properly rejected.  Now all nonmeta expressions
		are required to be scalar (0-dimensional), until a future
		time when we define proper semantics for them.  
	  Added test case: parser/chp/124.hac
		Few other expect-fail tests updated with new diagnostic.


2008-02-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-05:
	  Continued development of prsim:channels, mostly implementation
		of source/sink commands, and interactions with 
		the simulator state's events. 
	  State::excl_exception now derived from common base step_exception
		to support different exception types. 
	  Cleaned up previous patch #if's.
	  Still untested.


	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-04:
	  prsim/Channel-prsim.{h,cc}: use packed 2D array structure
		instead of vector-of-vector, cleaner and faster.
		Started to implement channel::process_node.


2008-02-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-03:
	  Slight redesign of prsim::channel structure, allowing for
		concurrent non-conflicting modes of operation.
		Handful of new channel commands: stop, release, 
			source, sink, expect, log (-all variants).
	  Added basic test case.


2008-02-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-02:
	  More channel development.
	  Can now declare a channel, but not do anything with it yet.


2008-02-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38-prsim-09-01:
	  This branch is for the development of the long awaited
		channel features in prsim.
	  Initial revision is incomplete (link-fail), work in progress.
	  Added sim/prsim/Channel-prsim.{h,cc}


2008-02-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-39:
	  By request, autosave in prsim and chpsim.
		either pass -a on command invocation, or use
		'autosave' [on|off] command in interpreter.
	  Documented and basically tested.  


2008-02-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-38:
	  cflat -strengths now also computes strongest-single-path
		drive strength ('one'), along with min,max.
	  Test cases updated.


2008-02-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-37:
	  Experimental: cflat mode to compute and print minimum
		and maximum drive strengths for every rule.
		Documented, and somewhat tested.
	  prs macros: turned off negative value checking for macros
		as a temporary workaround to support strength deduction
		AND prs-literal extra (bogus) parameter for transistor type.


2008-02-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-36:
	  prsim command: 'why-not', recursively figures out why a
		node is NOT a given value, following fanins and exprs.
		This pretty much performs deadlock analysis, 
		and any other query for "why isn't this doing what I
		think it should be doing?"
		This would've been useful years ago...
	  Documented, and well tested with cases in prsim/ and lib/.
	  prsim/TODO -- one item down!


2008-02-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-35:
	  prsim::why-x: now prune already-visited backtrace paths, 
		makes output much more scalable and comprehensible for huge
		directed-acyclic clouds of X nodes.  
	  Tested in lib/ on token-ring structures.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-34:
	  prsim command: 'why-x', recursively traces back the source of
		signals in the X state, through other X signals, 
		and other related diagnostics, also detects cycles. 
		TODO: maintain a global set for pruning.  
	  Documented and minimally tested with new test cases.  
	  Coming soon: 'why-not' [01]


2008-02-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-03:
	  yyparse() prototypes now take a flex::lexer_state& instead of FILE*
		to be able to change lexer buffers (next).  


2008-02-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-33:
	  prsim command: status-newline, like status but prints each
		node on its own line for readability.
	  Documented and tested.


	* HACKT-00-01-04-main-00-82-02-ACT-03-32:
	  prsim command: unknown-inputs-fanout
	  like 'unknown-input' but filters out nodes with no fanout.
	  Documented and tested.


2008-01-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-31:
	  prsim: bug fix: 
		strong pulls turning off should not be unstable if
		there is already a weak pull in the same direction on.
		Assign cause to the active weak rule.  
		Technically, rule *is* unstable...
	  Added test case: prsim/SRAM-d-02


2008-01-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-30:
	  prsim: CRITICAL bug fix(es):
		when pull-off yields to opposite rule, 
			set event's weak flag as necessary.
		when overwriting event in-queue, also update weak-flag
			WITH THE RULE THAT IS ACTUALLY ON, and not the
			one that turned off.  
	  prsim diagnostic enhancements:
		report instabilities on dequeued/overtaken events,
			except user-set.
		Many test cases updated with improved feedback.
	  NUMEROUS test cases added to prsim/ to cover many corners.  


2008-01-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-29:
	  prsim: major bug fix:
		shutting off of strong rules should yield to weak rules
		pulling in opposite direction, overtake in queue.
	  New test cases: prsim/weak-yield-*


	* HACKT-00-01-04-main-00-82-02-ACT-03-28:
	  prsim: critical bug fix (suitable for trunk!)
		dequeue *weak* unstable events now checks if a pending X
		node should be left in queue based on the new pull state
		and possible change of node value.  (3 line patch)
	  Test cases added for strong and weak rules alike.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-27:
	  prsim: kill-event-node function factored out for maintainence, 
		now print confirmation if node (and its events) 
		is being watched.  Minor adjust to test cases.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-26:
	  prsim: major bug fix: X events were not being (pending) enqueued
		when strong rules turned off, yielding to weakly (and
		possibly) pulling weak rules (possible interfering).
	  Fixed in test case prsim/SRAM-a-06.
	  For the record, this was particularly nasty and difficult to 
		analyze, after several botched patch attempts.


	* HACKT-00-01-04-main-00-82-02-ACT-03-25:
	  prsim new commands: assert-pending, assertn-pending
		assert whether or not node has pending event in queue.
	  Documented, not tested. 


2008-01-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-24:
	  prsim: minor bug fix: enqueuing of events in propagate_evaluate()
		failed to for presence of opposing weak rules, when they
		are enabled, test cases include single weak inverter.
	  Updated some tests with more asserts.


	* HACKT-00-01-04-main-00-82-02-ACT-03-23:
	  prsim: critical bug fix(es):
		fatal typo in Event-prsim.h: pending_interference.
		interference event handling: case immediate -> X was botched,
			now can accommodate unstably-dequeued events 
			while flushing interference events from pending queue.
	  Several test cases added, regression free.


	* HACKT-00-01-04-main-00-82-02-ACT-03-22:
	  prsim: 'step-event' command to advance by step count, 
		as opposed to time increments (old 'step'). 
		Sometime, you only want ONE event.
	  Documented, not tested.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-21:
	  prsim: CRITICAL bug fix: nodes stuck, failing to enqueue X
		events during interference.  bug was sensitive to
		production rule ordering (e.g. inverter) but now symmetrized.
	  Test cases added: inv-{20,21}, inv-alt-{03,04}.


2008-01-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-20:
	  prsim: bug fix: 'unset' was incorrectly setting some nodes to X
		in the event queue.  Test cases added: prsim/interference-*.


	* HACKT-00-01-04-main-00-82-02-ACT-03-19:
	  prsim, chpsim: added support to save/restore random number seed
		through libc's seed48.  Checkpointing now preserves seed.
	  Documented, added new test cases, prsim/oscil-random-*.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-18:
	  parser: parse but ignore attributes on PRS macros.
		TODO: Actually process them later...


2008-01-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-17:
	  prsim: major bug fixed, related to that patched by -09, -10.
		enqueued events resulting from instabilities (overtake)
		we're not synchronized with nodes for consistency.
	  Test cases added: prsim/unstable-{a,b}-01


	* HACKT-00-01-04-main-00-82-02-ACT-03-16:
	  prsim: bug fixed: checkpoint reconstruction failed to properly
		account for killed events in the event queue.
		Also related issue with loading affected nodes, fixed. 
		Test case added: prsim/killed-01.prsimrc
	  extra sanity check: pending-queue uses std::set to assert uniqueness


	* HACKT-00-01-04-main-00-82-02-ACT-03-15:
	  prsim: new command 'memstats' to report detailed memory usage 
		by simulator state.
	  Documented, tested only interactively.  


2008-01-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-14:
	  prsim, chpsim: print line number of current source/input on any
		error condition, easier to find position in files!
	  Updated all expect-fail test cases (expects) accordingly.


	* HACKT-00-01-04-main-00-82-02-ACT-03-13:
	  prsim, chpsim: added support for pseudo C-style block comments in
		input scripts.  Tests cases added to prsim/comment-0*.
		Useful for quickly disabling sections in scripts.  


2008-01-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-12:
	  Cleaned up some of #if mess from previous patch.  Less eye-sore.


	* HACKT-00-01-04-main-00-82-02-ACT-03-11:
	  prsim: another CRITICAL bug fix (crash/assert-fail)
		graduation of events from exclusive queues to main
		event queue failed to check for uniqueness of events
		which resulted in duplicate events in the queue.  
		Now using a map data-structure for the exclusive queues.  
	  sim/event.h: added optional uniqueness checking
	  Finallly able to add reduced test case prsim/precharge-f-01.prsimrc


2008-01-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-10:
	  prsim: continuation of previous patch, applied to pending event
		with AND without interference.
		Fixes a large test case in working project that was
		unabled to be reduced.  
	  Would be nice to have a small test case to trigger this fix/bug.  
	  Added a few more debugging commands to interpreter.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-09:
	  prsim: continued critical bug fixed!
		Added more consistency checks: check_event_queue()
			between events and affected nodes.
		When flushing interference event from pending-queue to 
			main event queue, compare event back-link from nodes
			before clearing.  (only triggered crash in
			weak-vs-weak-04 test case)
	  Added new test cases for strong interference.
		Patch is also appropriate for trunk.  


2008-01-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-08:
	  prsim: critical bug fix:
		failed to keep n.pending_event consistent with events
		that entered the queue.  this fix set_event's properly
		when flushing events from the pending queue (no interference)
		to the main event queue.
		Interestingly, only one test case (unstab-03) caught this.
		Suspect bug is present in original prsim as well...
	  Patch is appropriate for trunk, merge ASAP.
	  No new test cases, no regressions.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-07:
	  As promised from ACT-03-03, re-factored loop and conditional
		class code into template implementation class.  
		new: Object/unroll/meta_{loop,conditional}.{h,tcc}
	  Net loss of 500 LoC!  much easier to maintain, with less duplication


	* HACKT-00-01-04-main-00-82-02-ACT-03-06:
	  prsim: Correction to pending consistency check.
	  sim/prsim/Event-prsim.h: for now use slower more paranoid unique-set 
		for event free-list to catch inconsistencies sooner.
	  TODO: more debugging diagnostics


	* HACKT-00-01-04-main-00-82-02-ACT-03-05:
	  prsim: 'pending' command to check if event is already
		pending on node.  Also comes with debug mode.  Tested.
	  Now allow interpreter to accept comments like "#foobar".


2008-01-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-04:
	  Grammar update, allow empty instance management clauses 
		in conditionals, to make it easy to comment out bodies.  


	* HACKT-00-01-04-main-00-82-02-ACT-03-03:
	  Bug fix: forgot top-level spec-directives in cflat
	  Added support for loop and conditional spec directives.  
		Includes several new test cases.  
	  Next: cleanup, refactor loop/conditional code.


2008-01-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-02-merged-prsim-08-29:
	  Major child branch merge:
	  Mostly prsim additions and enhancements, no regressions.  
		Support for weak rules (can be disabled).
		Better support for non-QDI (synchronous) simulation, 
			mostly with unstable-dequeue mode.  
		VPI (verilog PLI) interface added, with plug-in shared lib.
		has undergone a *decent* amount of testing, as the audit
			trail of bug fixes shows.
	  Includes a few critical fixes, high priority for trunk.


2008-01-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-29:
	  Critical util library bug fix in util/packed_array.tcc, 
		see util/ChangeLog.   Symptom was botched printing of
		3D array indices, due to bad index_to_key lookup.  
	  Many test cases added to parser/connect.
	  This patch is appropriate for main trunk.  


2008-01-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-28:
	  prsim: new commands
		assertn-queue : error out if event queue is not empty.
			also added to chpsim
		unknown-inputs : show X-nodes with no fanin.
	  Documented and added test case.


2008-01-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-27:
	  State-prsim.cc: Minor clean-up for cause.node for readability.  
		No real source revision.


	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-26:
	  prsim: bug fix: stuck-node attributed to failure to 'overtake'
		a firing (by killing it), fixed.
	  Added new test case: SRAM-c.
	  Former test case SRAM-b-01 behavior updated, no longer
		enqueues an X event (is killed while pending).  


	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-25:
	  prsim/chpsim command update: 'watch-queue' is renamed 
		'watchall-queue', new 'watch-queue' replacement command
		prints events on watched nodes ONLY as they participate
		in the event queue -- much less mess than watchall-queue.
	  Documented, and test case updated.


	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-24:
	  prsim: bug fix: mistakenly enqueued weak-rules that should've
		been ignored due to strong rules overpowering.
		also hoisated some pull-evaluation code above conditionals.
	  Updated some test cases, and added new ones for this fix.


2008-01-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-23:
	  by request, prsim mode: echo-commands [on|off]
		print each line as it is interpreted (with #), 
		and also traces recursively sourced scripts.  
	  also added to chpsim
	  documented (texinfo).


	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-22:
	  Tiny fix: Event-prsim.cc free-list check-sum argument explicitly
		cast to size_t to avoid overflow problems in 64b mode.  
	  No test case added.  :-/


2008-01-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-21:
	  hacprsim: fixed stuck-node case, by allowing pending X events
		to be overridden or killed in the unstable-dequeue mode, 
		intended for synchronous-mode circuit simulations.  
	  Added new test case to demonstrate difference between these modes.


2008-01-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-20:
	  Clean-up: factor inline function get_pull() for maintainability
		and comprehensibility, no real source revision.


2008-01-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-19:
	  By request, mode switch to disable (ignore) all weak rules, 
		which is the default, or enable them.
		command: weak-rules [on|off]
	  Documented in dox/prsim, and basically tested.
		Old tests updated (script +"weak-rules on"), 
		and one new tested.  


2008-01-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-18:
	  prsim: ExprAlloc now quietly ignores supply_x SPEC directive.


2008-01-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-17:
	  Fixed unset_node() to apply correct delay on X nodes.
	  Still stuck on X error, not yet reproduced, worked around
		using 'unsetall' command.  (GAG)


2007-12-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-16:
	  prsim: check for weak-rules that are pulling as strong rules
		are turned off, which fixes many cases of nodes being
		stuck with weak-pulls on (inconsistency).
		New test case added.
		Opinion: wake up event processing needs to be completely
			re-written with weak rule model.


2007-12-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-15:
	  Weak vs. non-weak rules in the pending queue are now handled
		"more properly", pending weak-rules overpowered by normal
		rules are simply killed and replaced, and underpowered
		new weak firings are merely dropped.
		This fixes some long-standing problems (on this branch)
		of events 'hanging' on pulling rules (requiring 'unset'
		or 'unsetall' to trigger forced re-evaluation)
	  Several new test cases added using SRAM like cell.  


2007-12-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-14:
	  Interference checking now distinguishes between weak rule flavors.
		Only applicable when both strong up/dn rules are off. 
		Results in fixing some expect-fail test cases.
	  More explicit typing and conversions of node_type and expr_type's
		pull_enum.  Seems more clear now.
	

2007-12-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-13:
	  sim/prsim/Expr.h: pul_enum made a true enum, not uchar typedef.
	  sim/prsim/State-prsim.cc: propagate_evaluate():
		when !in_excl_q, and pull turns off, check both the 
		normal AND weak rules of the opposing pull.
		I'm certain this is bug fixed, but have no test case to
		trigger or prove it, unfortunately.  It seems obvious.
		Now updated event reflects strength of pull.
	  Known issue: can get into a state where a node is inconsistent
		with its fanins, i.e. not right value and not
		enqueued with firing to correct value.


2007-12-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-12:
	  New prsim mode switch: PRSIM_ALLOW_OVERTAKE_EVENTS:
		Allow events with known values to overtake pending
		X-events (preserving monotonicity) in the unstable-dequeue
		mode, to further accommodate synchronous circuit
		simulation.  New test cases added.


2007-12-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-11:
	  VPI-hacprsim works on basic test case (hurray!)
		Lesson: call initialize first!
		TODO: compose some basic test case with vcs -> simv
	  Factored out some useful functions from sim/prsim/Command-prsim.cc
		into Command-prsim-export.cc (for lack of better name).


2007-12-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-10:
	  prsim: print which events are weak in output
		Added some debugging code, updated TODO list.
		Added new test case with different behavior from reference.


2007-12-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-09:
	  First draft of VPI plug-in, based on reference vpi_prsim.c.
	  Makefile.am: build vpihacprsim.la as a shared-library module.
	  sim/prsim/vpi-prsim.cc: ported from reference code.
		Successfully loads as a plug-in! automatically bringing
		in dependent shared libraries.
		Doesn't fully work yet, still debugging callbacks, 
		and timing, and mystery return values.
	  Documented in dox/prsim/cosim.texi (of hacprsim.texi.info)
	  TODO: somehow test-case?


2007-12-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-08:
	  util/ChangeLog: critical tokenize bug fix, memory-related.  


2007-12-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-07:
	  No source revision, added TODO notes and a few test cases.


2007-12-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-06:
	  prsim: fanin-get: also print the pull state of the memoized
		subexpression for convenient debugging.  
		Prints <1> for pull-on, <0> for pull-off, 
		and <X> for pull-unknown.  Updated few test cases.
	  Added bunch more small test cases for weak rules.
		Still seeing some suspicious behavior, marked as expect-fail.


2007-12-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-05:
	  One more patch for consistent behavior with reference prsim:
		flush_pending_queue initially check non-weak pulls, 
		then before flushing_pending_events to main queue, 
		check for weak-rule vs opposite non-weak pull if necessary.
	  No regressions, but needs new test case contributed by Clint.


	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-04:
	  Some fixes for pending-queue insertion, w.r.t. weak rules.  
	  No regressions, still not perfect... investigating.


2007-12-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-03:
	  First round of test cases, discovered some discrepancies with
		reference version of prsim (some disagreeable).
	  Removed a failing assertion: State-prsim.cc:flush_pending_queue.
	  Still dies on a large test, hard to reduce. 


	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-02:
	  Completed first draft of weak rule/events.
		Enabled PRSIM_WEAK_RULES switch.
	  No regressions, but desparately need new test cases, forthcoming.
		This needs rigorous testing.


2007-12-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01-prsim-08-01:
	  Grandchild branch for 'weak' prsim rules.
		Switch: PRSIM_WEAK_RULES (currently disabled)
		Initial revision setting up for easy modifications.
		Had to re-order prs attribute handling before
		rule allocation in the rule map to pave way for
		attribute-based rule connections.
		Passes regression tests.  


2007-12-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02-ACT-03-01:
	  Branch for another round of ACT compatibility.  
	  First revision:
		Object/lang/PRS.cc AST/PRS.cc: allow literals to take 
			optional 3rd parameter for transistor 
			type (ignored in middle-end).
		AST/SPEC.cc: loop/conditionals warning with 'where'
		Object/lang/PRS_macro_common.cc: 
			allow optional 3rd (type) parameter for passn/passp
		Object/lang/SPEC_common.{cc,h}, SPEC_registry.cc:
			new directive 'supply_x': currently does nothing.
		parser/hackt-parse.yy.in:
			allow optional send/recv/set/get bodies (ignored)


2007-11-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-02:
	  prsim: added fanin-get and fanout-get commands that print
		rules with current values of literals.
		Includes test cases, and updated documentation.  


	* HACKT-00-01-04-main-00-82-01:
	  No source revision.  Test support update only.


2007-11-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-82-00-merged-router-01-12:
	  Branch merge of chpsim bitrouter case study.


2007-11-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-99:
	  BUG fix (ICE-on-invalid):
		forgot to reject negative array indices, now checked
		prior to passing into unroll_aliases, in
		Object/ref/meta_instance_reference_subtypes.tcc.  
	  Reverted hacc_LDADD libhacktparsers.la, suspecting binutils bug.


	* HACKT-00-01-04-main-00-81-98-merged-ACT-02-07:
	  Branch merge for ACT compatibility.
	  Improved flow-control support for conditionals and loops around
		PRS language bodies, generalized else-if constructs.
	  Also operator '=' (equals) support added.


2007-11-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-12:
	  No source revision, merge to trunk, split-off later for next 
		test case studies.


2007-11-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-95-ACT-02-07:
	  grammar: allow '=' for '==' if wrapped in parens, 
		for ACT-compatbility, includes test parser/basic/oper-{04,05}.  
	  Updated cast2hac documentation.
	  end of branch, merge to trunk


	* HACKT-00-01-04-main-00-81-95-ACT-02-06:
	  Extended PRS to support else-if guarded prs bodies, 
		updated parser/hackt-parse.yy.in, AST/PRS.{h,cc}.
	  Added new test cases in parser/prs.


	* HACKT-00-01-04-main-00-81-95-ACT-02-05:
	  Cleaned up conditional switches as promised.
	  Added new test cases to parser/prs (conditionals).
	  Next: extend grammar/AST for else-if.
	  Later: syntactic-only support for bool directions (!?)


2007-11-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-95-ACT-02-04:
	  Major rework of conditional scopes.
	  This revision adds full support for prs bodies inside
		loops and conditionals.  
	  class meta_conditional_base: now supports arbitrary number of
		guard expressions, used by rule_conditional, and 
		conditional_scope. 
	  AST/PRS.cc; rule now return void instead of rules, and now just
		append rules to the current active prs body, which is...
	  AST/parse_context.h: a new member in this class.
	  TODO: else-if constructs in parser and AST (already supported
		in the middle-end and IR)
	  TODO: clean-up flags VOID_AST_PRS_RETURN, 
		VOID_AST_GUARDED_PRS_RETURN (in AST/PRS.h),
		AST/instance.cc, GENERALIZED_META_CONDITIONAL, 
		EXTENDED_CONDITIONAL_SCOPE_FRAME (parse_context)


2007-11-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-97:
	  lexer/hacflat-lex.ll (flatten_with_file_wrappers) don't
		initialize in declaration, because compilation puts it into
		the initialized data section, which may cause problems
		with shared libraries on certain platforms.  
	  	Privatized global variable, exposed through function instead.
	  main/flatten.cc (hacpp): changed -w flag to -P to resemble cpp -P.
	  Makefile.am: hacpp_LDADD libhacktparsers.la only needed for
	  	ubuntu-gcc-4.1.2 (WTF?) suspect miscompile/binutils bug.


2007-11-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-96:
	  Header validation VPATH fix.
	  Make.hchk-tail: $(ECHO) over echo
	  scripts/promote_header_deps.awk:
		use simpler index() function for prefix substring match.
		solves problem of emitting bad dependencies when VPATH
		build dir is *outside* of srcdir (not a subdir).
	  lexer/flex_lexer_state.cc: #ifdef typo fix LEXER_HAS_YYLEX_DESTROY, 
		thanks Tadeo for testing.  


2007-11-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-95-ACT-02-03:
	  AST/instance.cc (loop_instantiation::check_build): 
		enabled prs inside loops, in addition to loops inside prs -- 
		does the right thing, even removes empty loops.
	  Two fistfuls of test cases added parser/prs.
	  Next: conditionals rework.  Down to 1 transient regression.


	* HACKT-00-01-04-main-00-81-95-ACT-02-02:
	  parser/hackt-parse.yy.in: new non-terminal
		instance_item_extended now includes language_body,
		requires parser::language_body to derive from 
		instance_management (base), now in "AST/instance_base.h".  
	  entity::process_definition: ditched add_production_rules in favor
		of accsesing the PRS rule_set directly through...
	  AST/parse_context.{h,cc}: new member current_prs_body
		will be the place to append rules as the PRS trees are 
		walked, which opens the doors to supporting prs inside
		of conditional and loops in the instance management.  
	  Split out new header files: AST/instance_base.h, AST/lang.h
	  currently 3 transient compile-fail test regressions related
		to prs within loops and conditionals.  
	  TODO: generalize conditionals to accommodate cascaded else-if
		for instance-management and prs alike.  
		AST: conditional/loop instantiation to accommodate prs,
		and also delete if empty.


	* HACKT-00-01-04-main-00-81-95-ACT-02-01:
	  Round 2 of ACT-compatibility patches.
	  Object/lang/PRS*.{h,cc}: deleted redundant class nested_rules
		in favor of already existing rule_set.
		PRS_base.h: rule_set now derives from rule.
		class rule_loop: deleted unused member `rules'.
		This change is appropriate for trunk as well.  


2007-11-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-95:
	  BUG FIX (accept-invalid): AST/token.cc, AST/expr.cc
		more incorrect global references rejected in lookups
		for token_identifier/id_expr's check_meta/nonmeta_reference.
		Added new test cases to parser/connect.


	* HACKT-00-01-04-main-00-81-94:
	  BUG FIX (reject-valid?): Object/common/namespace.cc (add_definition)
		shadowing: if found definition belongs to other namespace,
		warn that the new definition will overshadow those imported.
		These lookup rules need to be resolved at some point.
		Added new test cases to parser/namespace, no regressions.  
	

2007-11-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-93:
	  BUG FIX (accept-invalid): referencing global instance from
		definition scope was not caught, 
		causing ICE during create phase... now fixed.  
	  test cases added to parser/connect/globals-*


	* HACKT-00-01-04-main-00-81-92:
	  lexer/file_manager.cc: fallback to searching local directory LAST, 
		which is contrary to traditional cpp, which searches
		locally FIRST before checking include paths.
	  Rationale: be able to override local directory with -I flags, 
		and user can always specify search order of '-I .'
	  test case added: test/lexer/include-path-01


2007-11-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-91:
	  hacpp (flatten) bug fix: match fake-identifiers to avoid
		substrings that happen to be keywords, duh!
		Gracias, Tadeo, for finding and reporting.
	  Test cases added test/lexer dir.  


2007-11-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-90:
	  lexer/hacflat-lex.ll: added global variable to control whether
		or not #FILE { ... } wrappers are printed or omitted, 
		still enabled by default, but...
	  main/flatten.cc: pass -w (for no-wrap) to suppress wrappers.  
	  test suite updated accordingly.


2007-11-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-89:
	  Added: lexer/flex_lexer_state.cc.  Defines destructor
		the deallocates the buffer or buffer stack.  
		Uses newly added configure tests for lexer features.
		Header file updated accordingly.  
	  Noted false-positive memory leak report in BUGS.  
		Not a bug, libstdc++ uses pool allocator.


2007-10-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-88:
	  cygwin-compatibility accomodations (part 1)
	  configure additions in top-srcdir, 
		and corresponding library uses (util/ChangeLog)



2007-10-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-11:
	  Scheme additions only for chpsim trace (scm/ChangeLog).
	  Test cases updated accordingly.  


2007-10-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-10:
	  No source revision.
	  More 4-channel router tests with "interesting" input characteristics
		and sensitivity comparison.  
	  TODO: call event-criticality histogram and sort through results.


2007-10-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-09:
	  No source revision.
	  Added more 4-channel tests.
	  All router tests pushed down to new router/ subdir to unclutter
		the parent chpsim/ dir.  


	* HACKT-00-01-04-main-00-81-85-router-01-08:
	  No source revision.
	  First batch of 4-channel bit-router tests in test/chpsim.


2007-10-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-07:
	  No source revision.
	  Re-factored bitrouter test cases to make it trivial to 
		change the environment for future sensitivity tests.  


2007-10-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-87:
	  lexer/purify_flex.awk: generalizd pattern match for a few more 
	  	function calls to rewrite, to accommodate flex 2.5.31.


2007-10-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-86:
	  Minor -f ACT mode reject-valid bug fix, thanks to test from Tadeo.


2007-10-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-06:
	  No source revision.
	  Another batch of bitrouter tests with more interesting input pattern.


2007-10-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-05:
	  Scheme functions edited, see scm/ChangeLog.  
	  More bitrouter tests...


2007-10-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-04:
	  No source revision, more bit-router tests with
		lengthened packet separation.
	  Next: vary packet length


	* HACKT-00-01-04-main-00-81-85-router-01-03:
	  No source revision, more bit-router tests.  
	  TODO: more input variations!


2007-10-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-router-01-02:
	  No source revision, more bit-router tests.  


	* HACKT-00-01-04-main-00-81-85-router-01-01:
	  No source revision intended on this branch, which is meant for
		developing a set of bitrouter CHP tests and benchmarks
		for thesis-related work.  Don't want to perturb trunk
		until some new testing infrastructure is better tested.  
	  New tests and CHP sources in test/chpsim[/testlib].  


2007-10-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-85-merged-channel-03-05:
	  Branch merge.  Summary:
	  Enabled shared channel notation !! and ??to explicitly declare
		when a channel is allowed to be connected to multiple
		consumers/producers.  However, it is still the user's
		responsibility to guarantee that access to such channels
		is still exclusive.  
	  Also includes one bug fix: trying to port-connect incomplete type.


2007-10-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-84-channel-03-05:
	  No source revision, added chpsim test cases using sequentially
		accessed shared channels.  
	  End of branch, merge to trunk.  


	* HACKT-00-01-04-main-00-81-84-channel-03-04:
	  Bug fix: ICE-on-invalid (should've been applied to trunk first)
	  Object/inst/substructure_alias_base.cc: verify that alias
		has complete type before connecting its ports.  
	  new test case: parser/template/115.


2007-10-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-84-channel-03-03:
	  No source revision, just test cases for expect fail and
		some chpsim test library additions, using shared channels. 
	  One more batch of chpsim test cases, then merge.


2007-10-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-84-channel-03-02:
	  Fixed and enabled shared channels in connection checking
		switch: Object/devel_switches.h: ENABLE_SHARED_CHANNELS
	  Using ?? and !! to denote shared senders/receivers in 
		port-formal declarations.  
	  Added set of basic accept-valid test cases test/parser/channel, 
		next batch will include reject-invalid.  


2007-10-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-84-channel-03-01:
	  Quick branch for enabling shared channels.  
		Need this to share channels across token-ring elements
		mutually exclusively.  
	  Only changed encoding of channel type from char to enum to better
		accommodate shared channel types.  
		Enum defined in Object/type/channel_direction_enum.h
	  No regressions.
	  Next: front-end support (middle-end already in-place, untested).


2007-10-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-84:
	  Fixed ICE-on-invalid/accept-invalid bug: reject mismatch
		number of relaxed template parameters earlier.  
		Files: AST/instance.cc
	  Includes newly fixed test cases in test/parser/template.


2007-10-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-83:
	  Tweaked header deps checking to be even smarter.  


	* HACKT-00-01-04-main-00-81-82:
	  No source revision, documentation only: sorted .info into direntries.


2007-10-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-81:
	  cleanup: Perm'd SUPPORT_NESTED_DEFINITION (stack in parse_context).


	* HACKT-00-01-04-main-00-81-80-merged-ACT-01-15:
	  Branch merge: -ACT-01 (rev. 15).  Summary:
	  First round of patches compatibility for ACT compatibility.
	  compile (haco): supports dialect flags to fine-tune compilation
		for minor language variants, see documentation.  
		For greatest ACT-conformity, pass -f ACT.  
	  All definitions must be exported before being used outside their
		home namespace, or pass -f export-all to revert to old way.
	  Added PRS attributes: comb, keeper, output, loadcap (all do nothing)
		PRS now supports #> arrow (flip and negate literals), 
		and prs<Vdd,GND> { ... } (syntax only).
	  Full support for @ internal nodes in PRS.  
	  PRS expr loops exceeding max now error out during create phase.  
	  prsim: (minor fix) fanout excludes duplicate rules. 
	  All the above documented and tested.  
	  Unresolved issues:
		deftype/chan bodies should not be optional (OK).
		relaxed template syntax is unchanged, but ACT uses '|'
		PRS literal FET-type parameter not yet supported, but
			can be worked around by defining fake pints.


2007-10-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-15:
	  Added PRS rule attributes: comb, keeper, output, loadcap, 
		some of which remain unimplemented as placeholders.  
		Files: Object/lang/PRS_attribute_{common,registry}.cc, 
			sim/prsim/ExprAlloc.cc
		Also documented, with minimal tests.  
	  Declaring this branch done, no major blockers left, unresolved
		issues have workarounds.  Some untested test cases added, 
		but flagged as pending on issues.  
	  Ready to merge to trunk.


2007-10-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-14:
	  Added support for #> (flip-literals) PRS arrow, mimicking ACT-cflat.  
		files: AST/PRS.cc, Object/lang/PRS.{h,cc}
		new vfunction: prs_expr::flip_literals(), 
		pull_base now uses enumeral arrow_type field.
	  Includes test cases and documentation.  


	* HACKT-00-01-04-main-00-81-74-ACT-01-13:
	  No source revision.
	  PRS internal nodes documentation only.  


	* HACKT-00-01-04-main-00-81-74-ACT-01-12-merged-PRS-08-14:
	  Merged -PRS-08 child branch (rev. 14).
	  Language has full support for internal nodes in PRS now.  
	  Next: document in dox/lang


2007-10-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-14:
	  Perm'd PRS_INTERNAL_NODES.  
	  End of branch.


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-13:
	  AST/parse_options.h: option to reject internal-node arrays
		for ACT compatiblity mode.
	  sim/prsim/State-prsim.cc: (dump_node_fanout)
		eliminate duplicate fanout rules.
	  Next: Perm PRS_INTERNAL_NODES in Object/lang/PRS_base.h
		and merge to parent branch.


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-12:
	  AST/PRS.cc: fixed base ID extraction in internal_node array refs.
	  Enabled bunch more (realistic) test cases to test/parser/prs.
	  Branch nearly ripe for merge (to parent branch).  
		No known problems, but would be nice to test prsim as well.


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-11:
	  Tackled some FINISH_ME's:
	  AST/instance.cc: added position of error in alias list.
	  Object/inst/dummy_placeholder.tcc: never-call diagnostic.
	  Object/lang/PRS.cc: internal_node reference negation.
		error message for failed lookup moved to bool_literal.
	  Updated and added few new tests.  


2007-10-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-10:
	  AST/expr.cc: => is not allowed with internal node definitions.
	  PRS_footprint's node-expr map restructured to encode direction, 
		so each unique node may be pulled in only one direction.
	  Added some tests, more pending test cases coming...


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-09:
	  First working draft of internal nodes for cflat and hacprsim.
	  AST/expr.cc: prefix_expr::check_prs_expr():
		intercept negated internal node and flag accordingly.
	  Object/ref/simple_meta_dummy_reference.{h,tcc}:
		added dump_local to automatically infer owner scopespace
	  Object/lang/bool_literal.h: added negated member, only
		applicable to internal_nodes for direction.  
	  Added switch cases for PRS_NODE_TYPE_ENUM to cflat_printer and 
		hacprsim's ExprAlloc.
	  Let us celebrate with a round of adding test cases!


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-08:
	  Object/lang/PRS_footprint.{h,cc}: implemented internal node
		expression map.  Map storage results in increase in 
		footprint object binary size, 
		so all affected create test dumps updated (~600).  
	  Object/lang/PRS_enum.h: added PRS_NODE_TYPE_ENUM.  
	  Next: negation of internal nodes on LHS needs to bind to the
		literal, instead of a conventional NOT expression, so when it
		appears on LHS the negatedness determines whether to 
		lookup the pull-up or pull-dn internal node definition.
		Adjustment may be kludgy...


2007-10-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-07:
	  meta_instance_reference_base: added unroll_resolve_copy
		which is a collection-independent resolver that just
		substitutes meta parameters and variables, 
		resulting in constant-indexed references.  
		Implemented in simple_meta- and member_meta-.  
	  Object/lang/PRS_base.h: added/implement prs_expr::unroll_copy so
		internal_node definitions may store pre-resolved
		LHS expressions.  
	  Object/lang/bool_literal.{h,cc}: unroll resolve routines, 
		bool_literal_base_ptr_type now const.
	  Object/ref/simple_meta_indexed_reference_base:
		implemented unroll_resolve_indices (it's about time!)
	  TODO: register internal node expression maps (pull_base::unroll).


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-06:
	  Moved internal_node pointer into bool_literal, to reduce code mess.
		Macros and spec directives don't use internal-nodes, 
		but this allows the possibility in the future.


2007-10-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-05:
	  AST/PRS.cc: check_rule supports internal_node r.h.s.
	  node_traits.h: added built-in type pointers for internal node.
	  Object/lang/PRS.cc: pull_base supports internal node on r.h.s.
	  Enabled a few compile-pass test cases.  
	  Consider fusing pull_dn/pull_up into pull_base.  
	  Consider fusing internal_node into bool_literal.


2007-10-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-04:
	  Implemented dummy internal_node_reference class.
	  AST/PRS.cc: literal::check_prs_literal, check_prs_rhs, 
		register internal nodes with the definition scope, 
		and create special node references for entity::PRS::literal.
	  Object/lang/PRS*, enabled PRS_INTERNAL_NODES switch, 
		implementations largely untested.  
	  AST/parse_context.{h,cc}: support special addition and lookup of 
		internal nodes, restricted to PRS.  
	  Object/common/scopespace.h: support internal node registration, 
		which may be mulitple, given implicit declarations.  
	  Object/inst/node_instance_collection.cc: instantiate placeholder.
	  First signs of life, enabled a few parse test cases.  


2007-10-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-03:
	  Added dummy_placeholder class for internal nodes meta-class, 
		so that it may (soon) be registered with definition scopes.
		Includes many TODO markers.
	  TODO: to AST/parse_context, add add_internal_node, 
		and construct basic instance-reference from it, 
		add reference to entity::PRS::literal class.


	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-02:
	  Grammar: only allow member expressions in non-internal nodes
		in rules' rhs.  Restrict literal references to scalars.
		Should really apply to all prs literals...
	  Added one pending test case, updated some compile-expect-fails.


2007-09-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11-PRS-08-01:
	  Sub-branch: work on internal node support in PRS
	  In this revision:
		parser::PRS::literal has 'internal' flag.
		Replaced non-code with finish-me.
		parse::PRS::rule's RHS promoted to literal.
		Object/lang/PRS.h: provisional support for internal node
			currently disabled with flag PRS_INTERNAL_NODES.
		Object/lang/PRS_footprint.h: proposing to maintain
			unrolled internal node expr map here.
	  TODO: instantiate node_placeholder class to be created, 
		probably fake arrays, use different lookup in PRS context.
	  Tentatively disabled lone internal-node test in parser/prs.


2007-09-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-11:
	  gramamr: prs lang construct is allowed to take optional parameters
		e.g. prs <HVdd, GND> { ... }
		For now, we ignore these parameters, just parse.


	* HACKT-00-01-04-main-00-81-74-ACT-01-10:
	  AST/parse_context,PRS: eliminated unnecessary call to
		add_top_level_production_rules, was obsolete long ago
		when module was subtyped from process_definition.


	* HACKT-00-01-04-main-00-81-74-ACT-01-09:
	  AST/parse_options.h: namespace_instances -- switch to reject
		non-global namespace instance mamagement.  
	  AST/parse_context.cc: helper function to reject things
		that don't belong in non-global namespaces.
		Reject them when ACT dialect is selected.  
	  main/compile.cc: added dialect modifiers to options, documented.
	  Added bunch of new test cases, some quarantined until resolved.
	  Next: minor cleanup of parse_context::add_production_rules.


2007-09-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-79:
	  Object/lang/PRS.cc: added check for expression loop max size here, 
		so error is caught long before prsim allocation, during unroll.
		test case prsm/expr-limit-b revised to create-fail, 
		which saves a lot of time.  


	* HACKT-00-01-04-main-00-81-78:
	  int type-trait check, see util/ChangeLog.


2007-09-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-77-merged-CHP-03-08:
	  Merged CHP-03 branch.  Summary:
	  CHP tree intermediate representation now carries up-link
		information so full context of every CHP action can be
		reconstructed.  chpsim-event diagnostics now have access
		to CHP action contexts.  
	  Critical path routine now come with a verbose variant script
		that prints the full context of every critical event, 
		see test/chpsim/critical-path-verbose.hacchpsimscm.
	  added some supporting scheme functions (scm/ChangeLog)
	  Tons of test cases added.  
	  TODO: document scheme functions.


2007-09-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-75-CHP-03-08:
	  guile/libhackt-wrap.cc, scm_chpsim_event_node.cc:
		added some utility functions: map event to process-id, 
		check for valid process-id.  
	  new scheme functions (scm/ChangeLog), 
		and new test cases in test/chpsim.
	  We now have a routine for detailed critical path, 
		showing source in full context for every critical event.
	  Ready to merge to trunk, add documentation later.


	* HACKT-00-01-04-main-00-81-75-CHP-03-07:
	  Implemented dump-event-source in scm, added some test cases
		looks similar to dump-all-event-source.
	  Next: added event->process mapping functions to scm.


2007-09-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-08:
	  No source revision, only added test cases for export/connect.
		Still need bunch more export tests...
	  It seems ACT doesn't allow instances outside global namespace...
	  TODO: compiler flag to revert to old export-all behavior
	  TODO: document 'export' in language spec
	  TODO: preserve exportedness in definition_base::write/load, 
		print exportedness in object dumps.


2007-09-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-07:
	  Implemented 'export' semantics, I think.  
		Built-in definitions auto-exported.
	  Updated existing test-cases (inputs) accordinglyi, 
		added a few new ones.  
	  TODO: new batch of export tests, some from ACT.  
		To test: typedefs, prototypes, redeclarations, 
		parent/child namespaces


2007-09-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-76:
	  Critical BUG fix: string corruption because expr_dump_context
		only shallow copied a char*, which was last dangling
		after context construction.  Problem only exhibited in
		one line of one test case in the entire test suite
		on one platform, one compiler.  
		test/chsim/channel-sync-desyng-a-11.hacchpsimscm
		Lesson: you can never have too many tests.  
	  Other: util/test/Makefile.am: call test programs with ./
	  Makefile.am: install_path.h dependencies fixed on prsim.cc, 
		chpsim.cc


2007-09-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-06:
	  Massaged grammar to support optional export directive, 
		refactored prototype rules for ease of maintainence.  
	  Compile-fail tests updated to account for grammar updates
		for both yacc/bison.  
	  Next: update type-check pass to honor export directives
		and document in dox/lang.  


2007-09-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-75-CHP-03-06:
	  No source revision, added TONS of test cases for printing
		CHP events/actions in their whole context.
	  Next: add to guile API for chpsim lib


2007-09-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-05:
	  Updated grammar for datatype and channel definition bodies, 
		allowing spec bodies and alias/connection statements.
	  Test cases added and updated.  


2007-09-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-04:
	  Grammar: allow empty prs/chp/hse/spec bodies, 
		also in tree and subckt.
	  Test cases updated accordingly, a few new ones.  


	* HACKT-00-01-04-main-00-81-74-ACT-01-03:
	  Trivial change: 'as' keyword is marked deprecated, 
		namespace using directive uses "->" now.
	  Test cases updated.
	  TODO: add act test cases using namesace '->'


2007-09-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-75-CHP-03-05:
	  Object/lang/CHP.cc: bugfix: load selection statements' guarded
		actions before relinking, to guarantee their action
		statments are valid before invoking ::set_parent.
	  sim/chpsim/Commands,State: implemented 'dump-all-event-source'
		command to print contextual dumps of CHP source of events.
		First batch of test cases added.
	  sim/chpim/Event.cc: refactored dump_type
	  Minor library updates in util/, see util/ChangeLog.


2007-09-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-75-CHP-03-04:
	  Implemented a contextual CHP event printer, first draft looks good.
		Needs rigorous testing...
	  Added dump-event-source command to chpsim to print this.
	  Minor bugfix, initialize CHP::action::parent to NULL.
	  TODO: add to guile API.


2007-09-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-75-CHP-03-03:
	  No source revision, only updated create-dump test cases (~100).


	* HACKT-00-01-04-main-00-81-75-CHP-03-02:
	  Object/lang/CHP_base.h: stripped away no-longer used 
		shared-this argument from unroll_resolve_copy.
	  Still need to update test dumps.


	* HACKT-00-01-04-main-00-81-75-CHP-03-01:
	  This branch adds information necessary to reconstruct the
		precise context of every CHP statement with parent links.
	  Object/lang/CHP_base.h: flag CHP_ACTION_PARENT_LINK drafted
		and enabled.  This results in mandatorily deep-copying
		statement trees upon unroll to maintain correct 
		parent-child link relationships.  
		Test suite only fails on create-object differences
		due to statement replication.


2007-09-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-75:
	  Perm'd COPY_OF_PORT_ALIASES flag in Object/devel_switches.h


2007-09-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-02:
	  sim/command_common.tcc: stdout/stderr interleaving fixed, 
		jumbled up diagnostic message before in chpsim test.
	  Patch appropriate for trunk.


2007-09-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74-ACT-01-01:
	  No source revision.
	  This branch is intended to resolve language differences with
		Rajit's ACT toolchain.  (Thanks to 2 years of miscommunication)
	  First revision adds most of ACT's test suite.  
	  Known differences are documented on the art mailing list.  


2007-09-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-74:
	  main/compile.cc: don't auto-name object file, because
		srcdir of input file is not automatically stripped.
	  dox/: Removed obsolete latex documentation.


	* HACKT-00-01-04-main-00-81-73:
	  No source revision, documentation updates only for PRS-07 merge.


	* HACKT-00-01-04-main-00-81-72-merged-PRS-07-13:
	  Five month old branch merged.  Syntactic support for
		PRS extensions tree and subckt, just parsed and ignored.
		Minimalist test cases included.
		Datatypes are now parsed like processes for simplicity.
		Added unstab attribute to PRS.  


2007-09-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-13:
	  parser/hackt-parse.yy.in: commented-out no longer used data_param
		syntax rules and types, superceded by generic types in grammar.


2007-09-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-12:
	  Four months later... still no contributed test cases... XS
	  Synchronizes with (Rajit's) ACT update from 20070909.
	  Support optional parameters in subckt <...> {...} syntax.
		Still just ignores, but parses.
		Intended parameters are single integer or "string".  
		Added minimal pass test cases, not bothering fail tests.  
	  Going to attempt long-distance branch merge...


2007-09-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-71:
	  Added option to all tool-commands to read in source file
		as input in-place of an object file.  
		-c tells the driver input is to be compiled (text source)
		and -C "..." forwards options to the compiler-driver, 
		as if it were running haco (compile).
		TIP: wrap in quotes in shell to bundle flags together.
		For those of you who never want to see object files, 
		and want to get off the ground faster with the tools.  
	  main/compile.cc is now part of the core library, since other
		programs can invoke the compiler.
	  Documentation updated too.


2007-09-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-70-merged-chpsim-09-18:
	  Branch merge of -chpsim-09.  Summary:
	  Event data structures' stateless information is created once per
		process type, including local structural information about
		the event graph.  This saves a *tremendous* amount of memory
		in only allocating stateful information in CHPSIM, 
		and gives a consistent event-subgraph footprint per type, 
		which allows rapid allocation and reverse-lookup from 
		global-events to local-events.  e.g., global event successors 
		are evaluated using simple offsets resulting from 
		bulk-allocations.  Events belonging to instantiated processes
		are now allocated in contiguous index ranges.


2007-09-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-18:
	  Perm'd CHPSIM_BULK_ALLOCATE_GLOBAL_EVENTS 
		in sim/chpsim/devel_switches.h
	  Ready to merge to trunk, passes distcheck.  
	  Will resume CHP-action parent-tracing on new branch.  


2007-09-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-17:
	  Perm'd LOCAL_CHP_EVENT_FOOTPRINT in Object/devel_switches.h.


	* HACKT-00-01-04-main-00-81-68-chpsim-09-16:
	  sim/chpsim/Event.cc: assign 0 delay to NULL events.  
	  Last remaining test cases updated and re-verified, 
		leaving NO regressions with this revision.  
	  Ready to merge after cleanup.


	* HACKT-00-01-04-main-00-81-68-chpsim-09-15:
	  Mostly test updates.
	  guile/chpsim_event_node.cc: fixed successor reporting to
		use the new local process offsets.  
	  Most of remaining test cases in test/chpsim updated, re-validated.
		The few remaining need more staring...


	* HACKT-00-01-04-main-00-81-68-chpsim-09-14:
	  No source revision, only test updates.
	  Majority of affected regression tests updated (the trivial ones).
		Majority of remaining are coupled to guile-scm tests, 
		and should be verified and update together, with more scrutiny.


2007-09-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-13:
	  sim/chpsim/*: fixes print condition in Event.cc, 
		State.cc: factored pid validity checking, provide
			reference-based dump_event, 
			fixed dump_struct check for pid validity
		StateConstructor.cc: now assign same delays as before.
	  No tests updated yet, still with new flag enabled.  


2007-09-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-12:
	  Continued work on CHPSIM_BULK_ALLOCATE_GLOBAL_EVENTS:
		most test cases at least run without crashing, 
		results looking promising.
		Test dumps for chpsim-alloc/dot and execution need to
		be massively updated and re-verified by hand... *sigh*


2007-09-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-11:
	  Finished first draft of CHPSIM_BULK_ALLOCATE_GLOBAL_EVENTS, 
		still disabled (but at least compiles), 
		tests show no regressions.  Next, flip the switch and pray...


	* HACKT-00-01-04-main-00-81-68-chpsim-09-10:
	  Perm'd DUMP_CHPSIM_PARENT_CONTEXT (sim/chpsim/devel_switches.h)


2007-09-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-09:
	  Made more cut marks around CHPSIM_BULK_ALLOCATE_GLOBAL_EVENTS
		and added provisional code to switch over, but still disabled.
	  Planned out some changes to chpsim/State and StateConstructor.


2007-09-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-08:
	  Object/state_manger: make_process_dump_context function reuse.
	  sim/chpsim/{Event,State}: started sketching out 
		CHPSIM_BULK_ALLOCATE_GLOBAL_EVENTS (new switch, disabled)
		use make_process_dump_context, delete dupe code


	* HACKT-00-01-04-main-00-81-68-chpsim-09-07:
	  Minor revision:
	  Print do_while_loops as selection events (either loop or exit)
		in pretty-printing output.  
	  Print null events with multiple predecessors as 'join'.
	  Much more readable now... test cases updated accordingly.


	* HACKT-00-01-04-main-00-81-68-chpsim-09-06:
	  Object/lang/CHP_footprint.cc: impl. dump_struct_dot, more limited
		than original version from sim/chpsim/State.cc.
	  process_type_reference: lookup_footprint convenience method.
	  main/chpsim.cc: support for -t and -T to specify a process-type
		to operate on instead of the top-level instances.
	  Test suite: updated remaining chpsim tests with updated
		definition footprint dumps of chp event graphs.  


2007-09-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-05:
	  main/main_funcs: new function parse_and_create_complete_process_type
		recycled from main/cflat.cc for reuse.
	  main/cflat.cc: use newly refactored code


	* HACKT-00-01-04-main-00-81-68-chpsim-09-04:
	  Tiny clean-up:
	  Object/module.{h,cc}: historic __cflat_aliases_no_import
		removed b/c identical to its counterpart after refactoring.
	  Preparing to reuse complete-type-to-module code...


2007-09-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-03:
	  Object/lang/CHP_event_alloc.cc:
		in do_forever_loop, defer loop-back slot elision
			to the compaction/canonicalization pass.  
		minor bug fixes in canonicalization:
			s/copy/event_footprint[temp]/
			mark_as_entry() *unconditionally*
	  Object/lang/CHP.cc: 
		concurrent_actions::unroll no longer get_chp_footprint
		unless it is not empty, to save unnecessary allocation.
		In other places, check footprint::has_chp_footprint() first.
	  re-confirmed/updated all test cases in test/parser/{chp,channel}:
		createstderrs gained chp events per unrolled footprint,
		also headers gained CHP-concurrent actions objects.  
	  Next batch to re-confirm in test/chpsim.


2007-09-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-02:
	  Copy-reduced many sim/chpsim/ event classes/functions to
		Object/lang/CHP_event* (new): event, footprint-pool-allocator.
	  Object/devel_switches.h: LOCAL_CHP_EVENT_FOOTPRINT, 
		enabled and in progress.
	  Object/def/footprint.{h,cc}: chp_footprint (concurrent_actions)
		pointer is now registered persistently, not just private-impl,
		because event footprint needs back-refs to all CHP actions.
	  Tests expected to fail with new chp-event footprints printed, 
		need to hand-verify many test cases...
		Would help to have graph visualization per-footprint def...
		No tests were touched.  


2007-08-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68-chpsim-09-01:
	  Primary objectives of this branch:
	  CHP event footprint (local events) to eliminate replication.
		Globally allocated events will just 'point' to
		local events and carry only per-event data.  
		Allocation of events will in bulk, per-process.  
		Since local event references never leave process, 
		can use offset arithmetic to perform lookups.  
		Can also construct interval map from global event ID to PID.  
		Block may-dependencies will have to be delayed until
		global event/variable allocation.  
	  CHP actions back-link to parents in tree representation, 
		enable precise contextual printing and referencing, 
		and reverse-lookup to source.
	  Initial revision cleanup:
		Object/lang/CHP_footprint_expr.h: never used, purged.
		Perm'd sim/chpsim/devel_switches.h:
			CHPSIM_COUPLED_CHANNELS
			CHPSIM_DELAYED_SUCCESSOR_CHECKS
		Object/lang/CHP_footprint.h: wiped, will start over.


2007-08-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-69:
	  header-check-dependencies: can now strip away more than one
		srcdir in promote_header_deps.awk.
	  Perm'd Object/devel_switches.h:
		FOOTPRINT_LOCKS -- was done long ago without switch
		REF_COUNT_FOOTPRINTS -- no need with locks


2007-08-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-68:
	  bootstrap: create and distribute headers_deps.make and 
		include it from the srcdir.  Header-check dependencies
		were not being honored before.  
	  Makefile.am: fake ../libltdl/ltdl.hchk, and clean it.


2007-08-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-67:
	  lexer/hackt-lex.ll: support binary integers 0b[01]+
	  formatted I/O additions to util/ (util/ChangeLog)


	* HACKT-00-01-04-main-00-81-66:
	  Fixes for last patch, using configure-detection workaround, 
		and fixing backup implementations of util/numeric/...
		bit manipulation functions, when built-ins are unavailable.


	* HACKT-00-01-04-main-00-81-65:
	  Util library revisions only (significant): see util/ChangeLog.
	  CHPSIM standard library added new bit-manip functions, 
		also documented, see lib/ChangeLog.  


2007-08-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-64:
	  No source revision.  
	  Make.hchk-tail: header-check script now strips srcdir from 
		dependency when compiling to force path search
		for built headers.  


2007-08-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-63-merged-chpsim-08-09:
	  Branch merge of -chpsim-08.  Summary:
	  Added nonmeta-support for string-literal values, 
		currently only exposed to nonmeta language, such as CHP.
	  Added run-time support for passing around of string values (CHP).
	  CHPSIM standard library: added IO, file-stream, string manipulation
		library functions, all tested and documented.  
	  chpsim:dlopen: no longer use ltdl_find_sym, only use restricted
		interface for registering functions.  
	  parser: consecutive string-literals are automatically concatenated
	  lexer: support __FILE__ string token and __LINE__ integer token.
	  Internal improvements to CHPSIM module development headers.
	  Object/nonmeta_variable.h: minor bug fix -- use expr/types.h types
		for integer type consistency.
	  Many test cases added and helped iron out bugs.  


2007-08-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-61-chpsim-08-09:
	  No source revision, only library update and testing.
	  Ready to merge to trunk.  


2007-08-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-61-chpsim-08-08:
	  No source revision, only chpsim library testing, another batch.


	* HACKT-00-01-04-main-00-81-61-chpsim-08-07:
	  util/ChangeLog: stream_ptr.{h,cc}
	  No other source revision, just a round of library test
		cases and minor fixes (lib/ChangeLog).


	* HACKT-00-01-04-main-00-81-61-chpsim-08-06:
	  Expect-fail bug fix: do not dl_find_sym lookup functions, 
		restrict interface to module-load-time registration.
		This prevents accidentally finding exported symbols
		in the executable's image (its shared dep-libs).  
		file: Object/expr/dlfunction.cc
		test case: chpsim/missing_func-d
	  chp_function_ptr_type wrapped in never_ptr now (not needed).
	  sim/chpsim/dlfunction.h: WRAP_DLFUNCTION_NAME is now UNIQUIFY-ed.


2007-08-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-61-chpsim-08-05:
	  Implemented const_param::nonmeta_dump, which defaults to
		dump except for string_expr, which strips quotes.  
	  Rest is library testing and fixing. 


2007-08-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-61-chpsim-08-04:
	  First bug fix on branch!
	  Object/expr/dlfunction.h: make_chp_value now uses plain
		non-fancy simple function overloading, string_value_type
		was not properly dispatching before.
	  Random debugging codelets added during the bug hunt.
	  Object/nonmeta_channel_manipulator.{h,cc}: de-inlined dtor.
	  Added one test case in test/chpsim.
	  Also fix and addition to chpsim std library.


	* HACKT-00-01-04-main-00-81-61-chpsim-08-03:
	  sim/chpsim/chpsim_dlfunction.h: aded wrapper support for when
		argument (list) type does not need to be wrapper.
	  Rest of revision is library additions and library documentation, 
		see dox/ChangeLog and lib/ChangeLog.
	  Next: testing new lib functions.


	* HACKT-00-01-04-main-00-81-61-chpsim-08-02:
	  Object/expr/dlfunction_fwd.h: split-off foward declarations.
	  Object/expr/const_param_expr_list.h:
		more dump methods intended for nonmeta function calls
		from the CHP standard library.
	  Object/expr/dlfunction.{h,cc}: added support for
		string conversion and extraction.  
	  sim/chpsim/chpsim_dlfunction.h: use chp_function_* typedefs, 
		added more auto_wrap wrappers (wish for variadic), 
		registration macros now uniquify identifiers, 
		in case the same function is registered with different aliases.
	  Added bunch of CHP I/O functions to library (lib/ChangeLog).


2007-08-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-61-chpsim-08-01:
	  Branch: for adding string support and more chpsim standard
		library functions, especially user I/O functions.  
	  new: Object/expr/string_expr.h Object/traits/string_traits.h:
		welcome our new string metaclass!
		string_expr methods defined in Object/expr/data_expr.cc
		string_traits built-ins defined in traits/class_traits_types.cc
	  Object/traits/type_tag_enum.h: bumped up enums for string type
	  AST/token.cc: create string_expr in type-checking.
	  lexer/hackt-lex.ll: added support for __FILE__ and __LINE__ 
		directives, (like cpp) to be tested as function arguments.
	  parser/hackt-parse.yy.in: 'string' is automatic concatenation
		of STRING tokens.  "foo" "bar" -> "foobar"
	  Few basic test cases in test/parser/chp.


2007-08-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-62:
	  No source revision: lib/mk/Makefile.am fix


2007-08-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-61:
	  No source revision, main/cflat.cc extracted for texinfo 
		documentation (dox/ChangeLog).


2007-08-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-60:
	  No source revision, PRS/SPEC documentaiton only (dox/ChangeLog).


	* HACKT-00-01-04-main-00-81-59:
	  No source revision, prsim documentaiton only (dox/ChangeLog).


2007-08-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-58:
	  No source revision, documentation migration only (dox/ChangeLog).


2007-08-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-57:
	  CRITICAL patch for Darwin.  (but no source revision)
	  top-level configure[.ac]: pass LTDL variables via AC_SUBST
		because testing requires passing some additional 
		paths to library search path variables.  (Darwin only!)
	  This fixes chpsim library tests that have been broken since
		merge -chpsim-07.
	  See also ChangeLog and test/ChangeLog.


2007-08-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-56:
	  No source revision, test/Make.test-compile fix only (test/ChangeLog).


2007-08-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-55:
	  MASS PURGE: removed references and uses of unroll-phase, which was
		slated as deprecated a long time ago.
		Removed from configure script, and test suite cases, 
		and test Makefile templates, library Makefile templates,
		and documentation.


	* HACKT-00-01-04-main-00-81-54:
	  No source revision, documentation only (dox/ChangeLog).


2007-08-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-53:
	  No source revision, test Makefile maintainence (test/ChangeLog).
	  Soon... purge unroll phase from source.


	* HACKT-00-01-04-main-00-81-52:
	  No source revision, documentation only (dox/ChangeLog).


	* HACKT-00-01-04-main-00-81-51:
	  No source revision, just PRS library and test (lib/ChangeLog).


	* HACKT-00-01-04-main-00-81-50:
	  No source revision, documentation management only (dox/ChangeLog).
	  Removed dummy.cc phony sources in favor of letting configure
		generate directories using AC_CONFIG_COMMANDS.
		Removed uses of PHONYSOURCES in Makefiles.


2007-08-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-49-merged-chpsim-07-08:
	  Branch merge: -chpsim-07
		chpsim: improved run-time type checking with dynamic casts,
		standard library started
		general texinfo documentation additions and edits.
		documentation for options/commands/functions now
			embedded in source and extracted for easy maintainence.
		library installcheck tests


2007-08-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-46-chpsim-07-08:
	  No source revision, chpsim +library documentation (dox/ChangeLog).
	  Ready to merge.


2007-08-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-48-merged-parser-05-03:
	  Merge -parser-05 branch.  Summary:
		Support cpp #line directives (emitted by #include), 
		reports lexical/syntactic errors only in deepest file, 
		reports semantic errors only in outer file.
	  flatten(hacpp) now emits imported files enclosed in an
		embedded file wrapper recursively, which is then 
		parsed as if file were actually imported.  This retains
		file inclusion structure in import-flattened output, 
		making for improved error reporting accuracy.


2007-08-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-47-parser-05-03:
	  file_position_stack::dupe(): reset token position to 0:1
	  file_manager::embed_manager: decrement line one position after end.
	  lexer/hac_lex.h: no longer assert line > 0 because of new
		line compensation in file embedding directives.
	  Enabled more lexer and parser/basic test cases with few exceptions.
		Line numbers match-up between flattened and non-flattened
		source files in compilation diagnostics, which was goal.


	* HACKT-00-01-04-main-00-81-47-parser-05-02:
	  No source revision, just updated trivial flatten test expects.
		Added new flatten consistency check tests, currently failing.


	* HACKT-00-01-04-main-00-81-47-parser-05-01:
	  Mini-branch for parser support of flattening with improved
		line directives.  
	  New construct for embedding imported files while emulating 
		the import structure.  
	  lexer/file_manager.cc: embed_manager class to fake importing
		file without opening new file handle.  
	  lexer/hacflat-lex.ll: replace enter/leave comments with
		#FILE { ... } wrapping directives
		also test/vpath_file_filter.awk updated.
	  lexer/hackt-lex.ll: added EMBEDFILE construct, coupled with
	  parser/hackt-parse.yy.in: embedded_module rule for in-place
		imported file
	  Test case: trivial differences (fail) introduced in
		16 lexer, 8 parser/basic test cases only.
		Will fix shortly.


2007-08-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-47:
	  Support lexing line directives for reporting syntax errors, 
		but not semantic errors.  
		file: lexer/file_manager.cc, lexer/hackt-lex.ll
		Is only minimally tested, not very robust
	  lexer/purify_flex.awk: fix YY_AT_BOL use of current_buffer.
	  Few test cases added to test/lexer.


2007-08-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-46-chpsim-07-07:
	  Object/expr/dlfunction.{h,cc}: global variable to toggle 
		whether or not functions are acknowledged upon registration.
	  main/chpsim.{h,cc}: -f ack-loaded-fns to toggle this flag.
	  other: testing newly added chpsim standard library functions,
		including installcheck test
	  TODO: document standard library usage, and example


	* HACKT-00-01-04-main-00-81-46-chpsim-07-06:
	  No source revision, documentation and chpsim function library only.
		Starting to build chpsim standard function library.
	  See dox/ChangeLog and lib/ChangeLog.
	  Next: test cases for library functions, more lib functions w/ docs,
		and installcheck-tests.


2007-08-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-46-chpsim-07-05:
	  No source revision, documentation only.
		Migrated chpsim usage-options and command to in-source, 
		which is then extracted into texinfo.
		Keeps source-documentation close together.


2007-08-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-46-chpsim-07-04:
	  No source revision, added test cases only:
		tested proper error-handling and chaining of 
		function call arguments and return values, 
		stressed type-checking of new dynamic_cast operators.  
	  Coming up: chpsim standard library of functions, 
		including common utils like conditional expression, assert,
		and math library.
		More documentation management.


	* HACKT-00-01-04-main-00-81-46-chpsim-07-03:
	  AST/expr.cc: arith, relational, logical exprs all 'intercept'
		function call operands to automatically wrap them
		in a run-time type-check cast.  
	  Object/expr/nonmeta_cast_expr.{h,tcc}: now pool allocated.
	  Object/expr/nonmeta_func_call.{h,cc}:
		catch-and-rethrow error-handling and diagnostics
	  sim/chpsim/EventExecutor.cc: when rechecking channel_sends (and
		writing channel fields) catch exceptions and give diagnostic.
	  Some test cases updated with better diagnostic messages.


	* HACKT-00-01-04-main-00-81-46-chpsim-07-02:
	  Object/expr/nonmeta_cast_expr.{h,tcc}: new, middle-end
		and run-time casting expressions for type-checking.
		Corresponding type keys in Object/persistent_type_hash.h.
		Instantiated in Object/expr/data_expr.cc.
	  Object/traits/{int,bool}_traits.h: alias built-in type pointers
		to nonmeta_data_type_ptr member for consistency, 
		eventually reduce ugly specialization hacks, 
		also helpful step towards introducing real (nonmeta) types.  
	  Object/traits/real_traits.h: new, but not used yet (could be soon)
	  Forward declaration headers: added 'real' (meta-type) typedefs.
	  Next: front-end hooks to automatically apply nonmeta-type
		conversions where applicable (AST/expr.cc).


2007-08-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-46-chpsim-07-01:
	  Branch for chp/expresion additions, to support functions.
	  Coming up: run-time cast expressions (operator-implicit)


	* HACKT-00-01-04-main-00-81-46:
	  No source revision, test cases updates and additions only.
		See test/ChangeLog.
	  BUGS: made note of empty template bracket <> ambiguity, 
		which needs to be resolved as a language semantic defect.


2007-08-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-45:
	  No source revision, documentation only.


	* HACKT-00-01-04-main-00-81-44:
	  No source revision.  Setting up for improved installchecking.
	  See ../ChangeLog.
	

	* HACKT-00-01-04-main-00-81-43:
	  No source revision.  
	  Makefile.am missing dependency: sim/ISE.{o,lo}: cvstag.h
	  scripts/init_hackt.{sh,csh}.in: define/use @datarootdir@


2007-08-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-42:
	  No source revision, only adding lib/ PRS and test cases.
		See lib/ChangeLog.


2007-07-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-41-merged-chpsim-06-26:
	  Branch merge: chpsim now supports dynamically loaded functions.
		chpsim: new options and commands for dlopening modules.
		Includes complete texinfo documentation for chpsim.  (RTFM!)
		Stronger install-time checks for testing.  
		Installed Makefiles provide easey module build support.
	  At least one critical fix in util/ library (util/ChangeLog)


2007-07-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-26:
	  No source revision, documentation only.  (dox/ChangeLog)
	  End of branch, ready to merge to trunk.


2007-07-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-25:
	  No source revision, documentation only.  (dox/ChangeLog)


	* HACKT-00-01-04-main-00-81-39-chpsim-06-24:
	  No source revision, documentation only.  (dox/ChangeLog)


	* HACKT-00-01-04-main-00-81-39-chpsim-06-23:
	  Makefile.am: More install-paths added to install_paths.h.
	  main/chpsim.cc: usage now prints paths to additional documentation.
	  sim/chpsim/Commands.cc: `queue' relocated to `info' section.
	  One more chapter of documentation before merge to trunk.


2007-07-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-22:
	  No source revision, documentation only, see dox/ChangeLog.


2007-07-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-21:
	  Final testing on powerpc-apple-darwin7:
		mach-o lazy linker caught undefined symbol at run-time, 
		so we updated the following return type...
	  Object/expr/dlfunction.h: chp_function_return_type qualified const.
		so that existing explicit template instantiation
		from expr/basic_param.cc could be re-used.  
	  Build and test cycle confirmed on powerpc-apple-darwin7, with this
		revision, previous revision was good on i686-linux-gnu, 
		i686-apple-darwin8, and amd64-freebsd6.2.
	  Next: minimal *documentation* for usage, 
		pointing to existing examples where possible.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-20:
	  Trivial revisions to make error messages more consistent.
	  Updated few new test cases for LP32 (i686-apple-darwin).


2007-07-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-19:
	  No source revision, portability testing and patches only.
		Previous revisions on this branch were only tested on 
		amd64-freebsd with gcc-3.4.6.
	  Object/expr/dlfunction.cc: remove meaningless const qualifier.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-18:
	  No source revision, just lib/mk Makefile template additions, 
		test/chpsim/installtest/Makefile.in now uses new hackt-lt.mk.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-17:
	  No source revision: just general maintainance fixups from last patch.
	  Makefile.am: pkglib_LTLIBRARIES re-ordered because post-install
		library linking needs to follow order of dependencies!  (arg.)
		CLEANFILES lists EXTRA_LTLIBRARIES.
	  Re-confirmed that installcheck-local works after these fixes.  


	* HACKT-00-01-04-main-00-81-39-chpsim-06-16:
	  Added installcheck.cc: verify that installed headers standalone
		and can be compiled, using an example chpsim module.  
	  Makefile.am: moved bogus parser libraries to EXTRA_LTLIBRARIES
		so they won't be built by default, but their rules remain.
		installcheck-local now builds installcheck.la, using
		trick to replace default compile flags.
	  sim/command_common.{h,tcc}, Object/expr/dlfunction.cc: 
		added function to print list of all loaded and bound 
		functions from dlopened modules.  Added test case.
	  Next: lib/mk/ Makefile templates with libtool compilation snippets, 
		and update tes/chpsim/installtest/Makefile.in accordingly.


2007-07-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-15:
	  AST/expr.cc: allow exceptional case for lone null rvalue argument, 
		to form a void function call, like hello().  
	  sim/chpsim/chpsim_dlfunction.h: wrappers now all consistently
		return same type, wrapped void functions return NULL.  
	  Makefile.am: listed more necessary install headers for chpsim
		dlfunction support and wrapping.  Also 'trimmed' some of these
		headers to reduce the install/include dependencies.  
	  Added some chpsim test cases involving multiple function modules.  
	  Next: various install-time tests.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-14:
	  sim/command_common.{h,tcc}, sim/chpsim/Command.cc:
		For those who forget to pass command-line options...
		Added support for interactive commands to load modules and 
		append the module search path, show the search path, 
		probe or assert symbol-to-function boundedness.
	  Added test cases to demonstrate.  


	* HACKT-00-01-04-main-00-81-39-chpsim-06-13:
	  Makefile.am: install-exec-hook re-installs binaries after libraries
		to suppress really silly post-install link warnings and errors.
		This patch can forward-port to trunk by itself, and really
		seems like something to go upstream to GNU automake.
	  Now generate "install_paths.h" from Makefile, for future 
		path-dependent execution and default library searching.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-12:
	  Object/expr/const_param_expr_list.h: operator[] replaced
		with run-time bounds check for catching run-time errors
		with passing wrong number of arguments to loaded functions.
	  Object/expr/dlfunction.h: added run-time type checks on arguments, 
		and also NULL checks on value extractors (now de-inlined).  
		sim/chpsim/chpsim_dlfunction.h adjusted accordingly.
	  Added small batch of expect-fail test cases involving errors
		in dynamically loaded functions.  
		FIXME: bad handling of type-mismatch in passing
			channel field, as a result of unexpected return type.
		NOTE: passing excessive arguments, just results in dropping
			unused arguments, doesn't report as error.  
	  TODO: more fail tests...


2007-07-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-11:
	  Minor nonmeta-function-call and assignment bug fixes (non-regress).
		Added symbol diagnostic to nonmeta_function's resolve().
	  Object/ref/simple_nonmeta_value_reference.tcc:nonmeta_assign():
		evaluate expression first as a const_param, and then
		dynamic cast -- allows for late type binding and checking 
		through external functions.
	  chpsim/EventExecutor:visit(function_call): 
		forgot to recheck successors.
	  Next: more test cases, more, more, more...
		also need installcheck support!


	* HACKT-00-01-04-main-00-81-39-chpsim-06-10:
	  First sign of life from chpsim-dlopen!
		Successfully test first case with dlopening function binding.
	  main/chpsim.cc: option processing diagnostics
	  sim/chpsim/chpsim_dlfunction.h: forgot dereferences
	  Object/devel_switches.h: added USE_TOP_DATA_TYPE so that function
		calls' return types are forgiven in the early phases of
		type-checking.  
		Object/def/definition.cc: static top_data_definition object.
		Object/type/type_reference.cc: honor the TOP type.
	  Object/expr/dlfunction.cc: print function binding confirmation.
	  First dlfunction test cases added to test/chpsim.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-09:
	  AST/{CHP,expr}.cc: updated type checking of send/receive arguments 
		to accommodate null arguments and omitted arguments 
		where appropriate (e.g. dataless channels).
	  Improved error messages on channel argument mismatches. 
	  Added CHP, channel, chpsim test cases for dataless channels.  


2007-07-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-08:
	  Middle-end support for dataless channels, changing some invariants,
		still remains untested in chpsim, however.  
	  Added some test cases.  
	  Need to update checking w.r.t. null lvalues (nonmeta).
	  Eventually get back to func_call checking...


	* HACKT-00-01-04-main-00-81-39-chpsim-06-07:
	  Grammar: chp_function_call_expr replaced with function_call_expr,
		which is grammatically identical to connection_statement, 
		but with additional restriction on base reference.
		chp_send arguments are now optional for dataless sends, 
			though still need to support such in middle-end.
		One test case (compile-fail) updated.
	  Type checking hit a snag with FINISH_ME in 
		nonmeta_func_call::get_unresolved_data_type_ref(), 
		need some hackish work around to delay type-checking.
	  Need test cases for grammar, type-checking (pass/fail).


2007-07-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-06:
	  sim/chpsim/chpsim_dlfunction.h: new.  This is the primary
		header to include when compiling a library of functions
		to interface with chpsim.  Contains useful wrapper macros.
		Need to provide some usage examples.  
	  Object/expr/*param_expr_list: updated operator[], and at().
	  Object/expr/dlfunction.cc: implemented type-check converters.  
		Now provide class whose objects automatically register
		named functions upon construction, for automatic function
		binding upon dlopen.  
	  main/chpsim.cc: added command-line options to add 
		load-path and dlopen modules.


	* HACKT-00-01-04-main-00-81-39-chpsim-06-05:
	  Makefile.am: started listing a few pkginclude_HEADERS to be installed
		for chpsim module building support.  
		Moved LIBLTDL to libhacktcommon.la's LIBADD.
	  New: Object/expr/dlfunction.{h,cc}: type-wrapped interface to
		a run-time loaded map of functions.  
	  Object/expr/nonmeta_func_call: added mutable function pointer member.
	  common/ltdl-wrap.cc: implemented ltdl wrapped interface.
	  Plan: each module loaded at run-time should come with a
		load_chpsim_function interface to bind symbols to names.  
		Alternative is to invoke demand-driven dlsym.


2007-07-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-04:
	  Continued front/middle end support for external functions in CHP, 
		new persistent type (CHP action class) function_call_stmt.
	  Implemented (untested) function call and nonmeta-expr-list 
		resolution member functions.  
	  Type-check phase now processes and creates CHP function calls.  
	  updated CHPSIM event enumerations and affected switch stmts.  
	  expression and CHP visitor classes extended for new types.  
	  TODO: dlopen function manager, through restricted type-checked
		function pointer interface.  


2007-07-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-03:
	  Added preliminary middle-end support for function call dispatching.
		new: Object/expr/{nonmeta_expr_list,nonmeta_func_call}
	  Added common/ltdl-wrap.h for libtool's dlopen facilities, 
		and other handy utilities (function map coming soon).
	  Makefile.am: LTDL flags added to libhacktsim
	  TODO: finish front-end support for external functions,
		and dlopen function map manager (for chpsim).


2007-07-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-02:
	  No source revision... yet.  Just top-level configury and 
		addition of libltdl from libtool.  
	  Next: try linking libltdl, pray for no conflict with guile-ltdl.


2007-07-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-40-merged-template-02-28:
	  Major branch merge -- relaxed templates implemented.
		Bunch of test case dumps updated, and a ton of new
		ones (mostly template relaxed) added.  
		Grammar updated, much of middle-end affected.  
		Language documentation updated.
		PRS library's env.hac: (sources) updated, including
			their uses in the lib/ test suite.  
		Status: significantly tested (I'm happy with it)
	  Includes 1 critical latent bug fix in from util library.
		Also a few less critical bug fixes, 
		and diagnostic message improvements.  
	  Only known bugs (NOT regression) are some incomplete type-checks 
		on crazy relaxed template typedefs.  


2007-07-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-28:
	  No source revision, documentation only in dox/lang.
	  End of branch, merge up.


	* HACKT-00-01-04-main-00-81-39-template-02-27:
	  Latent critical BUG fix: util/IO_utils.cc (I can't count)
	  process_definition (module): error message suppresses
		qualified name (file-name) for module-level errors.
	  Previous test cases on this branch were checked on LP64, 
		so create-object dumps have been updated to LP32, 
		still forgiving LP64 variants.  Affects all new
		and updated create-tests in test suite on this branch.  


2007-07-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-26:
	  No source revision -- lib/ and test/lib updates only.
	  We've FINALLY implemented relaxed template parameters enough
		to revise the PRS library sources (env.hac) the way they
		were intended originally.  
	  See lib/ChangeLog.


	* HACKT-00-01-04-main-00-81-39-template-02-25:
	  Now allow relaxed parameters to be used more liberally inside
		definition bodies, but former restrictions on uses in
		port-formals, template-formals, and typedefs still apply.
	  Updated and added new test cases.
	  Next: update lib/env.hac:sources and all uses thereof.


	* HACKT-00-01-04-main-00-81-39-template-02-24:
	  Bug fixed: when trying to reference a member, the parent instance
		must be type-bound and instantiated.  This may require
		an on-the-fly finalize_find() call to do just that due to
		late type binding of relaxed templates.  
	  Added test cases to verify this works.  
	  Branch has nearly reached end -- missing documentation updates.  


	* HACKT-00-01-04-main-00-81-39-template-02-23:
	  Comments-only revision in source.
	  Tried a handful of relaxed template typedef test cases in
		parser template... interaction is complicated, 
		do not bother trying to mix relaxed templates and typedefs,
		it is completely borked.  
		Both ICE-on-invalid and ICE-on-questionably-valid cases.
		Cases added to test suite with notes.  
	  BUGS: remarked about this known bug.


2007-07-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-22:
	  Error message improvement in diagnosing container type mismatch, 
		insignificant source revision.
	  Added another load of test cases involving port aliases among
		relaxed types.


	* HACKT-00-01-04-main-00-81-39-template-02-21:
	  Catch cyclic type dependence errors in unrolling, produce 
		meaningful error message.  Detected using footprint locking.
	  Added a few test cases, updated expect error messages.
	  This patch is really independent of the rest of this branch.


	* HACKT-00-01-04-main-00-81-39-template-02-20:
	  No source revision, just another handful of (some crazy) 
		relaxed template param. instantiation tests (parser/template).
	  Next: test out member references to type-unbound instances,
		catching self-recursion (w/ w/o template), 
		finally real library definition updates.


2007-07-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-19:
	  Finished type_completion_connection_statement (combined), 
		test cases still pending.
	  instance-alias, alias_actuals:
		pushed find(...) to parent policy class
	  instance_alias::finalize_find(): 
		now called by footprint::create_complete
		is an upgrade from find(...) that performs error-checking
		that every alias in a well-formed footprint has complete type.
		Consequently, tests that used to fail at alloc phase 
		now fail at creation time with checking in final pass.  


	* HACKT-00-01-04-main-00-81-39-template-02-18:
	  instance_alias_info::find(...):
		forcibly re-connect port aliases (to canonical) for all 
			aliases that have their relaxed types bound.
		highly inefficient, but needed for aliasing correctness
			in the face of late-bound types (after aliases made).
	  Some cleanup of port_aliases_tracker (dead source).
	  Resolved and added last batch of pending test cases 
		in parser/template.


	* HACKT-00-01-04-main-00-81-39-template-02-17:
	  Egregious hack to fix flaw and with some nice benefits:
		Added finalization pass to footprint::create_dependent_types
		that sweeps over process instances/aliases and propagates
		complete types to aliases, automatically instantiating
		and connecting ports recursively too.  
		cost: extra traversal, possibly redundant connections
	  A few test cases updated to reflect that every alias in footprint
		should have complete type.  Also redundant copies of 
		equivalent relaxed actuals are eliminated, nice.
	  No new test cases added this time.


2007-07-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-16:
	  Realized flaw in approach to late type binding w.r.t. aliases:
		aliases between unbound types need to have their ports
		recursively connected *after* their types are bound, 
		which is made difficult by the acylic union-find of aliases.
		Probably requires a finalization pass in footprint creation.
		Take caution shen shortening aliases!
		This needs to be completely thought out...
	  instance_aliases: propagate unroll_context to facilitate late
		instantiation with relaxed template argument bindings.  
		Using #if switch makes a real mess out of this...
	  More test cases again, with a bunch of known-to-fail/wrong
		to be analyzed further next.


	* HACKT-00-01-04-main-00-81-39-template-02-15:
	  Error handling fix and improved diagnostic messages.  
		Cases: relaxed parameters already bound and
			instance ports unrolling exception handling.
	  More test cases again.


2007-07-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-14:
	  Bug fixed! ICE on port unrolling fixed by simply attaching 
		per-instance relaxed actuals to each recursive port unrolling,
		also took care of parameter forwarding from formal to actuals.
	  Added bunch more test cases for this bug only.
	  Next: back to former test case agenda, working up to library.


	* HACKT-00-01-04-main-00-81-39-template-02-13:
	  template_type_completion::unroll(): for now restrict reference
		subtype to be simply-indexed (dynamic_cast).
		Use first alias's container to extract and complete 
		canonical type and create type's footprint.  
	  Added scripts/toggle_stacktrace.sh for rapid stacktrace toggling.
	  Added bunch more tests to separate what works from what fails
		in the current bug hunt.


	* HACKT-00-01-04-main-00-81-39-template-02-12:
	  More of the same code cuts, pulling out dead code 
		pre-ENABLE_RELAXED_TEMPLATE_PARAMETERS, 
		and still hunting the relaxed instantiation
		ICE bug cases in parser/template/env_source-*.  


2007-07-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-11:
	  Continued to cut out code that binds relaxed actuals to instantiation
		statements in front/middle-end, because 
		template_type_completion supercedes it.  


	* HACKT-00-01-04-main-00-81-39-template-02-10:
	  instance_alias_info::instantiate_actuals_only(): (bug fix)
		only unroll port instances if type is complete.
	  Mostly debugging code added.
	  Discovered a major (non-regression) bug in relaxed actual
		instantiation, resolution in progress.  
		Bug blocks work on relaxed typing of libraries.  


2007-07-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-chpsim-06-01:
	  Grammar extended to support function-calls expressions and 
		statements in CHP, but no further checking yet in front-end, 
		just placeholder code.  Intend to attempt dlopen-ing
		of shared libraries for external function calls.  


2007-07-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-09:
	  Minor old bug fix: relaxed template parameters didn't accept
		complex/aggregate expressions -- fixed.
		Grammar massaged, and now required parameters are checked
		post-parsing, in dynamic_param_expr_list::
			certify_template_arguments_without_defaults()
		since rule is relaxed now.  
	  Updated 4 compile-fail test cases, added a few new ones
		in parser/template, more to come.


	* HACKT-00-01-04-main-00-81-39-template-02-08:
	  Bug fix: canonical_type_base::combine_relaxed_actuals
		bad conditional for appending parameters.
	  Enabled a bunch of new test cases in parser/template.
	  Next: more complex test cases, prs library updates using relaxed
		template parameter binding (sources in particular).


2007-07-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-07:
	  Parser updated to support simple type-completion statements
		of the form "ID <args>;" which is already disambiguated
		from generic type references (whew!).  
		Minor: factored out generic_id : relative_id | absolute_id
	  NOTES: concluded that ports types must be bound by the local
		definition (footprint) to be well-formed, i.e. cannot
		be delayed and set by higher level of instance hierarchy.  
		Thus no longer needing member-refs in type completions.
	  Upgraded type-completion's reference to generic inst_ref_expr.


2007-07-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-06:
	  Object/inst/alias_actuals.cc: implemented synchronize_actuals()
	  Object/inst/instance_alias.tcc: impl. instantiate_actuals_only(),
		alias connection diagnostics now report names of violating
			aliases in bad connections.  
	  Object/unroll/template_type_completion.tcc:
		each parameter-bound alias now invokes create_dependent_types
		and instantiate_actuals_only (recursive ports)
	  Another batch of old regression tests re-instated, 
		several others with updated error messages.  
		Only old cases (hierarchical) remain: connect/120,121.


	* HACKT-00-01-04-main-00-81-39-template-02-05:
	  AST/instance.cc: implemented type_completion_statement::check_build()
	  Re-instated a bunch of old-regressed test cases, having re-enabled
		relaxed template parameter binding.  
		Added some new test cases that alloc-fail.  
	  Next: work on footprint creation and hierarchical relaxed
		template parameter propagation (akin to local aliases)


2007-07-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-04:
	  Object/unroll/template_type_completion.tcc:
		implemented unroll (first draft)
	  AST/instance.cc: support template_type_completion of array decls.
	  AST/{expr,range,instance,node_list}.{h,cc}: 
		added support for new constructors,
		upgraded some excl_ptr members to count_ptr 
		for copy-convenience
	  Object/expr/dynamic_meta_range_list.h: const pint_range pointers
	  Next: re-examine old test cases in template/06*.hac
		generally needs much more rigorous testing


2007-07-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-03:
	  No source revision, only test updates:
		the few 'regressions' have been updated from create-fail
		to create-pass and alloc-fail cases.  No regressions remain.
	  Next: continue implementation of template_type_completion
		and add test cases.  


	* HACKT-00-01-04-main-00-81-39-template-02-02:
	  Added Object/unroll/template_type_completion.{h,tcc}
		instance-management class, for relaxed template param binding.
		Currently only applicable to process meta-type.  
		TODO: implement the unroll() method, attaching parameters
			and expanding complete types recursively, 
			and processing internal alias connections.  
	  Object/devel_switches.h: ENABLE_RELAXED_TEMPLATE_PARAMETERS (on)
	  Began to relax create-time checking of type-completeness in the
		case of relaxed types, which postpones instantiation failure
		until allocation time.  
	  AST/instance.{h,cc}: initial support for type_completion_statement.
	  parser/hackt-parse.yy.in: TODO: promote member_index_expr
		in type_completion_statements.  
	  new regressions (temporary): 3 in template, 1 in connect, 
		all related to expect-fail upon create.


2007-07-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39-template-02-01:
	  Branch to get relaxed template parameters working again.
	  Removed mutable qualifier on relaxed actuals member in
		Object/inst/alias_actuals.{h,cc}, and de-const'd
		the attach_actuals() method.
	  TODO: possibly delay unroll_port_instances until types
		are complete.  
	  Goal: allow statements like "foo<5> bar<4>;",
		and be able to pass relaxed parameters down through
		connections and ports.  


2007-07-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-39:
	  No source revision.
	  libtool script invocation now verbose by default because we may soon
		use ./libtool and ltdl for dynamic linking (plugin/modules).


2007-06-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-38:
	  Attempt to support guile-1.4 API, see util/ChangeLog.


2007-06-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-37:
	  chpsim bug fix: value-peeks statements should not mark the state
		of the channel as receiver-blocked, so when sender arrives
		it still thinks it arrived before its receive counterpart.
		One line fix in sim/chpsim/EventExecuter.cc:
			EventRechecker(channel_receive)
		This fixes two new test cases that use value peeks
			with random timing.
	  Added new test case with parallel FIFO.  
	  Back to "no known chpsim bugs".


	* HACKT-00-01-04-main-00-81-36:
	  chpsim bug fix: false positive on checking for channel conflicts
		is fixed, by detecting rechecking (polling) on same channel.
		Source affected: EventExecutor.cc: EventRechecker (send/recv)
	  sim/chpsim/State.cc: more debug hooks
	  Ton of random-timing chpsim test cases added to test suite.


2007-06-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-35:
	  Only long long portability touch ups.  See util/ChangeLog.
	  lexer/purifly_flex.awk: attempted to work around brokenness of
	  	mawk implementation, but gave up.  
	  Makefile.am: SED_YACC_YYPARSE now matches (void) prototype to
	  	support an even older byacc skeleton.


2007-06-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-34-merged-LPxx-04:
	  Branch merge.
	  Summary: test suite is now blessed on LP64 platforms, now that 
		test suite has taken appropriate measures to filter out
		trivial binary-size differences.
	  Tested on amd64-freebsd6.2: distcheck is in good shape!


2007-06-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-32-LPxx-04:
	  No source revision.
	  util/test/Makefile.am: upgraded test scheme to use suffix rules
		for tests and removed the test-expect.sh[.in].
		Added support for non-LP32 binary differences in test suite:
		only affecting test static_count_ptr_test.
	  Branch end.


	* HACKT-00-01-04-main-00-81-32-LPxx-03:
	  No source revision, see test/ChangeLog.
	  No regressions (false-positives) occur in 64b build/tests now!
	  However one annoying util/test regression remains to be fixed, 
		in the sizeof(ptr) dump of static_count_ptr_test.


2007-06-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-32-LPxx-02:
	  Niiiice!!! all create tests now pass on LP64!
	  No source revision, only test/ChangeLog.


	* HACKT-00-01-04-main-00-81-32-LPxx-01:
	  Mini-branch for test support on LP32/64 platforms.
	  Enabled scopespace sorting, resulting in a ton of create test
		updates due to object re-ordering.


2007-06-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-33:
	  No source revision.
	  Top-level configure.ac only, see ../ChangeLog.


2007-06-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-32:
	  Preliminary work for making test suite cooperate in LP64 mode.
	  Object/common/scopespace.cc: added flag to sort persistently
		kept objects by key (instead of unsorted hash).
	  See test/ChangeLog.


2007-06-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-31:
	  No source revision, Makefile rules for chpsim graphs, 
		see lib/ChangeLog and test/ChangeLog.


2007-06-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-30-merged-chpsim-05-10:
	  Branch merge.
	  Summary: added value-peek support (read channel without ack), 
		and lvalue-less receives, e.g. 'CHAN?'.
		chpsim dump and feedback names are MUCH more readable now, 
			since replacing definition-scope prefixes with
			parent process prefixes.  Names may not be canonical, 
			but they are at least equivalent.  
		chpsim dot graph generation: (same names improvement),
			added options to support process clustering, 
			and channel edges (very nice, I like)
	  And the usual batch of test cases that come with new features, 
		while old tests were updated.  


2007-06-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-10:
	  chpsim's (interactive) event feedback now reports events using 
		instance-hierarchical names, rather than definition-scope.
		Same as revision -02 of this branch.  
		Again, more comprehensible.
	  Test dumps (chpsim) updated accordingly.
	  Branch done.  


	* HACKT-00-01-04-main-00-81-25-chpsim-05-09:
	  No source revision, just test cases: filtering channel-peek events.


2007-06-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-08:
	  guile/scm_chpsim_event_node.cc: added is peek? predicate
	  Added batch of chpsim and guile test cases for peek and 
		valueless receive statements.  


2007-06-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-07:
	  For connection-checking purposes, peeks do not count as consumers.
		updated: Object/lang/CHP.cc: set_channel_alias_directions()
		Added relevant test cases.


	* HACKT-00-01-04-main-00-81-25-chpsim-05-06:
	  sim/chpsim/Event.cc: added switch cases for peek.
	  First batch of test cases added (parser/chp), mostly front-end.


2007-06-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-29:
	  Added support for guile-1.6 compatiibility!
	  Now guile-API calls go through more consistent wrapper interface
		supplied in util/libguile.h and util/guile_STL.h.
		Thank heavens for autoconf!  (see ../config/guile.m4)
	  see util/ChangeLog.
	  see scm/ChangeLog.
	  64b test suite is MUCH happier now, but there remain a few differences
		with this revision because they were tested on ILP64 platform.
		Differences are in createtests, and chpsim tests that dump
		trace file details.  
	  TODO: support 64b difference in test suite.


2007-06-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-28:
	  No source revision.  lib/mk/ maintainence only.


2007-06-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-05:
	  First stab at adding value-peek to CHP.
		Channel peeks block like receives, but when executed
		perform value assignment without completing acknowledge.
		Implementation: AST and object classes added peek flag
		and select semantics accordingly.  
		Receive objects increase in binary size by 1 char, 
		create test cases updated accordingly.  
	  For direction/connection checking purposes, peek acts like receive
		but should not register as a consumer (TODO).
	  Also supported lvalue-less receives, e.g. 'A?'
		useful for acknowledging without sinking lvalues.  
	  TODO: many test cases


2007-06-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-04:
	  chpsim dot graph generation now supports displaying of channels.
		one-to-one send-receive pairs emit only a labled edge, 
		whereas many-one emit edges through an auxiliary labeled 
		channel node -- reasonably reduces clutter.
	  Test suite Makefile rule enables -fshow-channels by default.
	  No test cases needed to be touched.  


2007-06-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-27:
	  BUG FIX (latent): middle-end instantiation checking mistakenly
		looked-up outside of the current context's target footprint, 
		when detecting conflicts (instantiation_statement::unroll).
	  New test cases added: parser/template/09{0,1,2,3}.hac


2007-06-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-26:
	  No source revision.  Added vim syntax highlight support.  
	  see lib/ChangeLog.


2007-06-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-03:
	  chpsim dot graph generation now supports process-clustering of events.
	  Test suite Makefile rule enables -fcluster-processes by default.
	  No test cases needed to be touched.  


	* HACKT-00-01-04-main-00-81-25-chpsim-05-02:
	  Changed printing of names in CHP dumps from definition-local
		to parent-process subinstances (aliases).
		e.g. 'definition::x' is now 'instance.x'.
		Added parent_instance to expr_dump_context, 
			checked in [non]meta_{instance,value}_reference classes
		sim/chpsim/devel_switches.h: CHPSIM_DUMP_PARENT_CONTEXT
		Much more readable now... but names not necessarily canonical.
		chpsimalloc and hacchpsimscm tests updated accordingly.


2007-06-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25-chpsim-05-01:
	  Branch for new chpsim developments.
	  No source revision, only documentation.
	  Initial plans (no particular order):
		support value-peeks,
		instance-hierarchical names in feedback (event graphs),
		event-graph process clustering


2007-06-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-25:
	  No source revision.
	  Documentation and packaging maintainence only.  


2007-05-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-24:
	  No source revision.
	  Updated scm/TODO based on dissertation requirements.
	  Added new chpsim-guile test cases for alternators.  
	  Really need to automate event-graph animation and visualization ...
	  TODO: fix new bug case template/090.


2007-05-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-23:
	  Cleaned up and perm'd some switches: CHPSIM_VISIT_EXECUTE.


2007-05-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-22-merged-chpsim-04-34:
	  Branch merge.  Summary:
	  chpsim's execution model for channels re-done, now as a slack-0
		channel where corresponding send-receives action pairs are
		tightly coupled, executed pseudo-atomically, i.e. guaranteed
		to have the same time-stamp, and always in pairs.  
	  Delays of events are now PREFIX-delays, where the delays are applied
		before a successor event is checked for the first time.  
		Previously they were infix-delays delay applied between
		checking and enqueuing.  This simplified several aspects, 
		with little complicationin the rest of chpsim.  
	  Channel states now represented using enumerated states, not just
		full-empty boolean anymore.  
	  New channel model correctly simulates slack-matching properties
		based on buffer forward and backward latencies.  
	  Minor updates: few new SCM subroutines, some old ones simplified, 
		tons of old chpsim test cases updated with new behavior.  
	  Many new test cases added to cover new functionality.  


2007-05-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-34:
	  No source revision.
	  Added slack-matching fibonacci tests, works very nicely.  
	  End of branch, distcheck and merge to trunk.


	* HACKT-00-01-04-main-00-81-19-chpsim-04-33:
	  No source revision.
	  Added slack-matching and latency-sensitive critical paths test cases
		to test suite, named test/chpsim/timed-{token,bubble}-ring-*.
		Everything works beautifully, as planned.  :D
	  Few more rounds of test cases before merge-to-trunk.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-32:
	  No source revision:
		Added wave of tests for various FIFO scenarios with 
		different bottlenecks, as confirmed by basic trace analysis.


2007-05-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-21:
	  common/config.{h,cc}: report guile version, if applicable.  


2007-05-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-11:
	  deftype (for datatypes) is also now 'snarfed' as a process definition
		analogous to defchan.  set and get bodies are dropped.  
		Consequence: user-defined datatypes will not work as intended.
	  More tests updated than expected: expect-fails (rejecting process
		instantiations inside deftype) are now accepted.
		deftype createdumps updated accordingly.  
		Other parser-related test cases updated, including for bison.
	  Added minimialist test case for deftype (fake) support.  


2007-05-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-31:
	  No source revision: added long-awaited token-hole test and 
		expected deadlock chpsim tests.
	  Next chpsim profiling and slack-matching tests...


	* HACKT-00-01-04-main-00-81-19-chpsim-04-30:
	  scm-only revision, see scm/ChangeLog.
	  Added some expect-fail test cases for multi-access channels.
	  Next: token-rings, fibonacci generator...


2007-05-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-29:
	  Woo hoo!  No more regressions left to process!
	  No source revision, only minor un-hack to scm/hackt/chpsim-trace.scm,
		see scm/ChangeLog.
	  Last remaining regression test cases updated.  
	  Now we can make some forward progress once again.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-28:
	  Object/nonmeta_variable.h: has_trace_value() for channels, 
		is true when channel has just received or sent.
		This allows trace reader to see <value>/'ack in
		strict alternation regardless of whether send or receive
		was more critical.  The latter of the atomic pair will
		always reset channel back to inactive.  
	  guile/chpsim-wrap.cc: tracing channel values now calls
		has_trace_value (new) to extract channel state.  
	  This batch of updated test cases uses this.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-27:
	  No source revision.
	  Updated marge batch of chpsim-guile test cases, mostly trivial
		differences arising from changes in execution trace due to
		tight channel synchronization.
	  Issues to resolve: channel-states and trace values (used to be 'ack),
		and branch selection execution counts (no longer need extra
		work to back-track because branches are executed normally now)
	  After those are resolved, add the long-promised slack demonstration
		test cases.  


2007-04-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-26:
	  FIXED remaining regressions on channel probes!
	  sim/chpsim/EventExecutor.cc: EventRechecker(channel_send) now
		adds the referenced channel to the list of updates to 
		propagate.  This is the only self-modify-checking
		corner case, needed to support probes.  
	  sim/chpsim/State.cc: Since blocking-sends "wake themselves up"
		we must filter out unintentional self-checks, which is covered
		in recheck_transformer.  
		In ::step(), in the event where a recheck blocks, 
			we now check for the blocked-send-to-probe wake-up.
		code factoring: __notify_updates_for_recheck(), 
			and __perform_rechecks().
	  Next: hacchpsimguile test updates.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-25:
	  sim/chpsim/State.cc: first_check is now wrapped in exception
		handler to give meaningful diagnostic messages.
	  Updated all expect-fail chpsim tests.  
	  Only two remaining chpsim tests fail on probe blocking, 
		which we will fix next.


	* HACKT-00-01-04-main-00-81-19-chpsim-04-24:
	  No source revision.
	  Another batch of chpsim tests re-verified, mostly involving
		deterministic selections, now in good shape again.
	  Remaining to fix: probe breakage (need reference-update-on-block)
		Some expect-fail tests haven't been addressed yet.


2007-04-30	Virantha Ekanayake	<viran@csl.cornell.edu>

	* HACKT-00-01-04-main-00-81-16-PRS-07-10:
	  Added unstab attribute to production rules
	  Also added a minimalist test-case in parser/prs (Fang).


2007-04-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-09:
	  As per request by Virantha:
		defchan is now treated like a process, where the 
			:> built-chan-type is ignored, and the 
			send/recv CHP bodies are ignored.  
		Only change was done in the parser, leaving middle-end
			type-checking unchanged, merely piggy-backing
			off of the process infrastructure.
		I repeat: defchan == defproc
		User-defined channels will never connect to fundamental
			channel types this way, so it shall remain broken.
		Small handful of parser expect-fail tests updated for bison.
	  Added defchan test case from Virantha, works as expected.  


	* HACKT-00-01-04-main-00-81-16-PRS-07-08:
	  User-defined channels now accept SPEC directives in body.
	  parser/hackt-parse.yy.in: only allow expression attributes
		like precharge to apply to & (and), not | (or) exprs.
	  Bunch of minimal test cases added, tree and subckt now generate
		cflattened prs as requested.  


2007-04-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-23:
	  No source revision.
	  Another batch of chpsim tests re-verified by hand.
		A few adjustments to test script inputs helped reduce
		expected differences and headache.  


2007-04-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-22:
	  Selection-events are now 'executed', no longer using
		DEFER_TO_SUCCESSOR-style execution.  
		More motivation to fuse check-and-execute!
	  selection-events are now printed briefly: [G -> ... ]
		chpsimallocdump tests have been updated accordingly.  
	  Checkpoint diffs fixed by saving and restoring immediate_event_fifo.
	  Large chunk of test updates, still more to go.
	  Issue with probes: needs to wake-up when sender is blocked, 
		but sender blocking (from first-check) doesn't
		cause a wake-up with change of event status!
	  Fixed: probe() true only when CHANNEL_SENDER_BLOCKED. 
	  Reminder: process new TODO tests in test/chpsim.


2007-04-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-21:
	  Object/nonmeta_variable.cc: Updated raw_dump printing policy 
		for channel_state_base, trace should record one channel
		value per cycle (synchronized).  
	  Fixed cause_trace_id progagation again.  
	  Updated another batch of test cases.  
	  Need to investigate channel-probe breakage and select failures.


2007-04-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-20:
	  Edited and enabled CHPSIM_COUPLED_CHANNELS, satisfactory results.
	  channel_state_base: removed aux_enqueue member, not using
		until we try to process event-pair atoms.  
		Added enum states: CHANNEL_RECEIVED and CHANNEL_SENT
		to represent state after unblocked by sender or receiver, 
		in transition to the INACTIVE state.  
		Updated can_send/recv, send/recv definitions.  
	  chpsim/State.cc: step(): corrected incorrect use of 
		cause_trace_id, using trace_manager's event count.
	  Updated a handful test cases, now many initial sends block
		properly, now effectively slack 0!
	  Next: keep updating tests.  


2007-04-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-07:
	  Clean-up of previous patch, along with some code refactoring
		to reduce duplication.  


2007-04-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-06:
	  parser::PRS::body is now a body_item, for prs rule nesting.
	  HAC::entity::PRS::nested_rules class for convenient nesting.
		tree and subckt now forward rules to their enclosing 
		environment, and are treated like normal PRS.  


2007-04-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-19:
	  Tiny patch to propagate cause_trace_id, but not sure if correct.
	  Discovered that delayed successor rechecking with decoupled channels
		result is completely broken result, with tokens being lost
		because of improper blocking.  First priority now is to
		tightly synchronize sends and receives.  
	  Still need to check correctness of selections, suspected wrong now.  


2007-04-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-18:
	  No source revision, test case updates only.
	  This batch required a little scrutiny to match up re-ordered
		send-receive action pairs.  
	  Observation: mostly selection test cases, which show something
		is screwed up (I think I know why).
	  Still TODO: re-propagate cause_trace_id, to fix trace cases


	* HACKT-00-01-04-main-00-81-19-chpsim-04-17:
	  No source revision, just test case update notes (test/chpsim):
		channel-self-parallel-a-{01,02}: timestamps shortened because
			send-receive pairs pay their delay up-front, so now
			their prefix delays overlap.  However, this is still
			not tight synchronization.  
		countdown-domin-b-01: wait events now appear on check queue,
			in this case, they block upon first check, 
			wake-up results in instant execution because delay
			was already paid up-front.  
	  This first round only covers obvious (?) test case updates
		that require no thinking.  
	  Next: test cases that require a little more scrutiny...


2007-04-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-20:
	  minor C++ conformance header fix: sim/chpsim/TraceIterators.h
		guile/hackt-documentation.h
	  Added unstab support to prsim structures and attributes, 
		but not actually used yet.  (Patch for cflat is elsewhere 
		on branch, hope to merge soon.)


2007-04-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-16:
	  No source revision, small batch of easy and stable (?) 
		regression test updates in test/chpsim.


	* HACKT-00-01-04-main-00-81-19-chpsim-04-15:
	  FIx: Don't decrement predecessor countdown *until* it is checked
		for the first time (first_check), which is now a 
		wrapper function around EventNode::recheck.
	  TODO: cause_trace_index is missing (all 0s)


	* HACKT-00-01-04-main-00-81-19-chpsim-04-14:
	  Enabled CHPSIM_DELAYED_SUCCESSOR_CHECKS, numerous tests fail.
	  Fixed assertion failure: forgot to reset immediate_event_fifo.
		No fatal errors remain, just possibly logical ones.  
	  pending_events() now checks immediate_event_fifo too.  
	  TODO: checkpoint immediate_event_fifo.
	  cause_trace_index is missing from trace, need critical path!
	  Some tests show unexpected deadlocks.  


2007-04-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-13:
	  Tested CHPSIM_DELAYED_SUCCESSOR_CHECKS enabled briefly, 
		but left disabled until further testing.  
	  Test suite shows one fatal assert-fail, other anticipated 
		logical differences due to invasive change of execution model.  
	  Not looking forward to re-verifying every friggin' test by hand...
	  Major annoyance: event-queue dumps now partitioned into 
		immediate events and to-check events.  
	  Next: fix use of pending_events, w.r.t. immediate_event_fifo.


	* HACKT-00-01-04-main-00-81-19-chpsim-04-12:
	  More mark-ups for CHPSIM_DELAYED_SUCCESSOR_CHECKS (disabled).
		Phasing out State::__enqueue_list, distinguishing between
		uses of immediate event fifo and recheck and first_check.  
		first_check is short-lived, now a part of the nonmeta_context.
		immediate_event_fifo now contains event_placeholder_types.  
		step should grab from the immediate_event_fifo first.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-11:
	  Re-applied remainder of -08 patch with ONE frickin' line change:
		step() calls set_event instead of using event_setter.
		*curses in perl*


	* HACKT-00-01-04-main-00-81-19-chpsim-04-10:
	  Re-applied most of rev -08 patch except for the suspicious
		portion of State::step(), which we'll re-do next in isolation.


	* HACKT-00-01-04-main-00-81-19-chpsim-04-09:
	  Damn it -- last patch was horked AGAIN.  Reverting...
	  Going to redo it piecewise...


2007-04-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-08:
	  More arrangements for CHPSIM_DELAYED_SUCCESSOR_CHECKS (disabled).
		Provisions include an immediate_event_fifo (execute-NOW)
		and re-writing step as a do-loop that dequeues events to 
		check until one actually executes.  
	  Notes added to sim/chpsim/TODO.
	  Be careful to distinguish uses of first_checks vs. rechecks
		in chpsim's nonmeta_context.  
	  No regressions this time.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-07:
	  Perm and clean up last patch: CHPSIM_CONTEXT_CARRIES_REFERENCES.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-06:
	  Partial redo: packed a global_references_set reference member
		to chpsim's nonmeta_context, passing fewer arguments around.
	  sim/chpsim/State.cc: pulled out execute call from __step(), 
		leaving __step to do mostly post-processing.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-05:
	  Reverted last patch, caused major test failures.  
	  Need to re-do it more systematically.  


2007-04-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-chpsim-04-04:
	  No new changes enabled yet.
	  More CHPSIM_DELAYED_SUCCESSOR_CHECKS mark-ups, particularly
		in the step() method.  
	  Re-organizing pieces of chpsim code to make clean transition
		to new execution model.  


	* HACKT-00-01-04-main-00-81-19-chpsim-04-03:
	  Perm'd CHPSIM_MULTISET_EVENT_QUEUE, and there was much rejoicing...


	* HACKT-00-01-04-main-00-81-19-chpsim-04-02:
	  Started to mark initial cuts for CHPSIM_DELAYED_SUCCESSOR_CHECKS
		but far from completion (disabled with this revision).  
		We push that onto the task stack so we can first
		perm CHPSIM_MULTISET_EVENT_QUEUE, which has been stable
		for a while, and is getting to be a nuisance to read.  
		Then we'll return to regularly scheduled hacking.


	* HACKT-00-01-04-main-00-81-19-chpsim-04-01:
	  ChangeLog abuse: 
	  The goal: slack zero channels and atomic paired send/receives.
	  The plan: Change the current execution model:
		now: execute, recheck, enqueue-with-delay, execute.
		next: recheck, execute-now, first-check-after-delay, recheck
		rationale: pay prefix delay up-front before first check
	  In this revision: CHPSIM_COUPLED_CHANNEL (disabled)
		preliminary markup of support for paired-atomic event 
		execution, intended for send/receives.
		Markup not complete though, interrupted so next revision
		can markup the work necessary for execution model change.
	  Following that, we'll turn on tight coupling of channels.  


2007-04-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-19-merged-scm-01-37:
	  Branch merge of chpsim/guile/scheme dissertation work, building
		a framework for versatile trace profiling.  
	  Summary: primitives in C++/guile, scheme code, basic static
		and trace analyses, and more scheme code.
		Provide sequential and random access to tracefiles as stream.
	  Fixes: chpsim's trace_manager wasn't updating previous_events.
	  TODO: automatic documentation assembly (texinfo)


2007-04-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-37:
	  No source revision.
	  We unfortunately have to merge this branch earlier than expected.
		chpsim's channel model needs to be redone, becuse I discovered
		that the occupancy-bit model of channels introduces slack 1
		on every channel and half-decouples send/receive pairs.
	  *SIGH* Fix and re-verification will occur on new branch, following
		this merge.  


	* HACKT-00-01-04-main-00-81-15-scm-01-36:
	  Scheme-only revision: see scm/ChangeLog: 
		fork-join static maps and do-while set, more test cases...


2007-04-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-05-backport-main-00-81-18:
	  Backtport of delta HACKT-00-01-04-main-00-81-17 to -00-81-18 patch.
	  sim/prsim/Expr.h: now define HUGE_MAX_EXPR_COUNT to use short to 
		increase range, and some improved diagnostics.  


2007-04-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-18:
	  Virantha wins the lottery!  He is the first person to 
		exceed the 255 term limit of prs expressions in prsim,
		i.e. immediate children of PRS_AND/OR limit.
		Prior to this patch, result would be assert failure.
	  sim/prsim/Expr.h: now define HUGE_MAX_EXPR_COUNT to use
		unsigned short to increase range, at the cost of memory bloat.
	  sim/prsim/ExprAlloc.cc, State-prsim.cc:
		better diagnostics in the rare event of an exception.
	  Added expect-fail test case for graceful failure.
	  Wish: future re-instate the 255 limit again.  


2007-04-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-35:
	  Scheme-only revision: see scm/ChangeLog: 
		Loop count analysis and loop/branch predicates.


2007-04-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-34:
	  Scheme-only revision: see scm/ChangeLog: 
		memoized sets of loop-head-tails and branch-head-tails


2007-04-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-33:
	  Scheme-only revision: see scm/ChangeLog: memoized event sets


2007-04-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-32:
	  Added some more chpsim-event primitive predicates.
	  More in scm/ChangeLog.


2007-04-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-17:
	  No real revision.  
	  Source clean-ups for -Wextra only (same as -W), mostly unused args,
		and added some source comments.  


2007-04-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-31:
	  Scheme-only revision: see scm/ChangeLog: rb-tree replaces alist.


2007-04-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-30:
	  Scheme-only revision: see scm/ChangeLog: rb-tree enhancements.


	* HACKT-00-01-04-main-00-81-15-scm-01-29:
	  Scheme-only revision: see scm/ChangeLog: new rb-tree implementation.


2007-04-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-04:
	  grammar: allow prs_literal to take an optional '@' prefix
		for provisional internal-node notation.  
		Token is just ignored and has no impact on rest of front-end.  
	  Minor restructuring to AST/PRS.{h,cc} to accomodate 
		prs_literal_base construction.  
	  Handful of parse expect-fail tests updated.  


	* HACKT-00-01-04-main-00-81-16-PRS-07-03:
	  Minor fix to prev. patch: tree/subckt language bodies are
		only nested inside PRS.  
	  AST/PRS.cc: body::check_build() PRS body items may now be NULL, 
		as returned by ignored language extension constructs.  


2007-04-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-02:
	  Added new language bodies 'tree' and 'subckt' as per Clint's request
		to support extensions in forked tool-chain.  
	  NOTE: this adds new keywords!!! don't blame me for breakage.  :P
	  Added a few minimal test cases.


2007-04-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-28:
	  No compiled-source revision, only scheme additions, see scm/ChangeLog.
		Summary: branch-selection histogram construction, and
		other general utility procedures.  


2007-04-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16-PRS-07-01:
	  Branchlet to support Clint's proposed PRS annotations.
	  This revision augmented the prs_and and prs_or syntax to support
		an (optional) operator-suffix attribute for precharge notation.
		The tokens, however, are just deleted, and not processed,
			as per request.  
		A scant few test expect-fails updated (yacc-only), no changes
			necessary for bison.  


2007-04-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-27:
	  guile/scm_chpsim_trace_streamer.cc: chpsim-trace-num-entries:
		allow argument to be string naming trace, or an
		already opened reverse-trace handle.
	  Critical path routines added to scm/hackt/chpsim-trace.scm.


2007-04-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-16:
	  Minor bug fix: lacking diagnostic when redeclaring an instance
		with different meta-type.  Fixed by catching a std::bad_cast.
		Added test-case basic/024.


2007-04-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-26:
	  guile/chpsim-wrap.cc: use reverse! in value-list construction
		to avoid unnecessary gc_allocation/deallocation.
	  See scm/ChangeLog for scheme additions for state-change stream
		operations.


2007-04-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-25:
	  Quick clean-up only:
		Perm'd SCM_USE_SYMBOLIC_TYPE_TAGS and TRACE_ENTRY_START_INDEX.
		Purged unused code in sim/chpsim/TraceIterators.h.
	  scm/TODO: update: removed completed entries


	* HACKT-00-01-04-main-00-81-15-scm-01-24:
	  guile/chpsim-wrap.cc: Finished implementing state-change-stream 
		interface to chpsim trace files.
		Now should perm. the use of SCM_USE_SYMBOLIC_TYPE_TAGS.
	  sim/chpsim/Trace.cc: fixed state_change_streamer::advance()
	  Added test cases for state-change-stream features.


2007-04-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-23:
	  Added guile/devel_switches.h for switches:
		using flag SCM_USE_SYMBOLIC_TYPE_TAGS to replace
		scm-constants with quoted symbols, such as 'bool.
	  guile/libhackt-wrap.{h,cc}: added scm_type_symbols array
		of unique-symbols 'bool, 'int, etc...
		which initializes the array (and reverse-map) at 
		procedure-load time.  
	  Test cases updated accordingly.


2007-04-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-22:
	  Added sim/chpsim/TraceIterators.h for handy state-change
		trace iterator classes (defined as nested).  
	  Implemented most of state-change trace stream interface.
	  Next: consider replacing hac:bool-tag constants with
		SCM symbols like 'hac:bool-tag.  
	  TODO: finish state-change to SCM constructor.
		utility scm functions to operate on state-change stream.


2007-03-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-21:
	  Implemented trace-file random-access interface, indexed by
		event entry number.  Added to file 
		"guile/scm_chpsim_trace_stream.{h,cc}" though is not stream.
		new primitives: hac:lookup-trace-entry, 
			hac:chpsim-trace-num-entries, 
			hac:open-chpsim-trace-accessor
	  Added added new test cases to go along with.
	  sim/chpsim/Trace.cc: entry_reverse_streamer now caches the
		total number of entries in tracefile upon init.


	* HACKT-00-01-04-main-00-81-15-scm-01-20:
	  Implemented and tested initial reverse trace stream interface.
		sim/chpsim/Trace.cc: implemented it.
	  Exported functions are named with 'trace-reverse'.
	  Copy-modified most of existing test cases to operate on 
		reverse streams.


2007-03-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-19:
	  sim/chpsim/Trace.h: added start_index field to contents entry
		to make it easier to do random access and reverse streaming.
		Few test cases updated trivially.  
	  In progress: reverse-entry-stream.


	* HACKT-00-01-04-main-00-81-15-scm-01-18:
	  Fixed some smob print strings to adhere to convention.
	  Relocated some raw-reference smob functions from 
		"guile/libhackt-wrap.cc" to "guile/scm_reference.cc"
		and provided a load-function interface.


	* HACKT-00-01-04-main-00-81-15-scm-01-17:
	  Added common/config.{h,cc}: where most of old main/version.{h,cc}
		functionality was relocated, so other extensions may use it.
		Also exposed most config-strings as public const char[].
	  Added guile/hackt-config.{h,cc} to export guile-wrapped configure
		information as scheme functions.  
	  Added smob-to-raw-reference wrapper func in guile/scm_reference.


2007-03-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-16:
	  Re-named all guile-primitives with "hac:" prefix, while 
		non-primitives remain unchanged.  We may re-export
		some of these functions without the prefix later...
		Scheme sources and test cases updated accordingly.  
	  Next: documentation strings for (procedure-documentation)
		for all non-primitives, and maybe define a (help-hackt).


	* HACKT-00-01-04-main-00-81-15-scm-01-15:
	  Re-defined all guile-primtive functions using HAC_GUILE_DEFINE
		registration macro.  
	  TODO: rename functions with "hac:" prefix.
	  TODO: generate texinfo, follow the way of the LilyPond!


2007-03-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-14:
	  Added scripts/init_hackt.[c]sh environment setup scripts, 
		generated by configure from respective .in's.
		append_path, prepend_path ripped from fink's startup scripts.
	  Begun experimental manual snarfing of primitive procedures, 
		ripped largely from LilyPond source!  Thank you, Lily!
	  Next: continue to convert all guile procedure registrations using 
		new HAC_GUILE_DEFINE* macros, following the example set by
		guile/libhackt-wrap.cc:`parse-reference' in this patch.  
	  TODO: rename all HACKT extension procedures (primitive and scheme)
		with 'hac:' prefix.  Will aid in mixing future modules, 
		and interactive tab-completion.  
	  Goal: run a hacguile scheme function to generate 
		comprehensive texinfo docs -- first covers primitives.
		Then we'll worry about .scm documentation.  


2007-03-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-13:
	  Added installed-script: hackt-config (configured from .in)
	  guile/scm_chpsim_event_node.cc: added primitive functions for
		event successor-lists and may-block-dependencies.  
		Added minimal test cases for new procedures.  
	  See also util/ChangeLog, scm/ChangeLog.


	* HACKT-00-01-04-main-00-81-15-scm-01-12:
	  No source revision, test/Make.test-* tuning only.  


	* HACKT-00-01-04-main-00-81-15-scm-01-11:
	  guile/chpsim-wrap.cc: Updated chpsim-event-trivial? with is_trivial()
		which now includes forks as trivial events.
		Added chpsim-event-wait? -select-det? select-nondet?
			primtive predicates.
	  sim/chpsim/Event.{h,cc}: split out condition-wait into its own
		code EVENT_CONDITION_WAIT, updated switch-cases.
		Added has_trivial_delay() to work as before.
		Renamed is_indispensible -> is_movable.  
		Added get_chp_action pointer accessor.
		sim/chpsim/State.cc, StateConstructor.cc updated accordingly.
	  Test suites were updated trivially to account for new revisions.  


2007-03-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-10:
	  guile/scm_chpsim_event_node.cc: 
		Added new field accessor functions to get the process-index, 
		delay, num-predecessors of (static) events.
	  Added test cases for these.
	  Minor additions/fix in scm/ChangeLog.


	* HACKT-00-01-04-main-00-81-15-scm-01-09:
	  Relocated chpsim-trace functions from guile/chpsim-wrap.cc
		to guile/scm_chpsim_trace_streamer.cc (cleaner boundary).
	  guile/scm_chpsim_event_node.cc:
		Added bunch of (untested) event-node type predicates.  
	  guile/chpsim-wrap.cc: split into two modules, one for general
		chpsim primitives, another for trace-related primitives.
	  See also scm/ChangeLog.


2007-03-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-08:
	  Added scm: hackt/hackt.scm (API built on top of hackt-primitives),
		hackt/algorithm.scm typical cookbook algorithm for
			higher-order functions
		hackt/streams.scm: added stream-filter-split to save away
			the stream that fails a predicate, returning pair
			of streams.  
		Added new test cases for these modifications.  
	  guile/libhackt-wrap.cc: added define constants for type-tag-enums.


	* HACKT-00-01-04-main-00-81-15-scm-01-07:
	  Added chpsim event node pointer SMOB.  We can use a pointer because
		for the lifetime of the interpreter, the event pool is
		statically allocated.  
	  Added simple print-all events scm test case.  
	  Next: event accessor functions (more notes in scm/TODO)


2007-03-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-06:
	  Bug fixed: chpsim trace_manager wasn't updating previous_events
		counter per flush, resulting in badly offset cause event IDs.
	  Minor: return value of prsim and chpsim clamped to 0 and 1, 
		was letting interpreter's return value code escape to exit.
	  More scm test cases added, and growing...


	* HACKT-00-01-04-main-00-81-15-scm-01-05:
	  scm/hackt/streams.scm: fixed definition of stream-filter and tested, 
		added and used cons-stream, slightly different definition
		than from SICP based on the use in ice-9/streams.  
	  scm/hackt/chpsim-trace.scm: added entry accessors, which can
		be replaced in the future.  
	  Going to be a series of little revisions while we shake out bugs
		one at a time.


	* HACKT-00-01-04-main-00-81-15-scm-01-04:
	  guile/libhackt-wrap.cc: now defines primitives in module
		"hackt hackt-primitives", autoloaded as such on startup.
	  guile::main() and guile/chpsim-wrap.cc now use these.
	  No tests were affected.  


2007-03-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-03:
	  Glory!  Successfully demonstrated working C/Scheme module.
	  current-trace-entry: now returns EOL instead of throwing error
		upon end of stream.  
	  guile/chpsim-wrap.{h,cc}: can now load module-exported symbols
		through scm_init_hackt_chpsim_trace_primitives_module().
	  main/chpsim-guile.cc: now import chpsim symbols into a module
		and open that module (hackt chpsim-trace-primitives).
	  Added scm/hackt/chpsim-trace.scm, building on primitives.
	  Next: move libhackt-wrap symbols into a hackt-primitives module.


	* HACKT-00-01-04-main-00-81-15-scm-01-02:
	  New chpsim-scm primitives:
		open-chpsim-trace-stream -- creates a trace stream SMOB
		chpsim-trace-valid? -- validity of trace stream SMOB
		current-trace-entry -- reads current entry and advances one
	  sim/chpsim/Trace.cc: bug fix -- forgot to read alignment marker
		TraceStreamer.h: added index running counter


2007-03-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15-scm-01-01:
	  This branch is for development of the chpsim-trace manipulation
		API for guile/scheme.  
	  Implemented chpsim-trace-reader that should provide stream
		interface to trace entries (by event), untested.  
	  Added scm/ subdir for scheme routines.  


2007-03-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-15:
	  Added dump-trace function to guile/chpsim-wrap.cc, 
		including a basic test case.  
	  Test suite added support for new hacchpsimscm script tests.  
	  Coming soon: scheme trace interface.


2007-03-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-14:
	  No source revision, corrected Makefile.am to build guile
		libraries conditionally.  


2007-03-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-13:
	  Noted major flaw in guile/C+++ interoperability in BUGS.
	  New program: 'hacchpsimguile' intended for chpsim trace analysis.
		Added: main/chpsim-guile.{cc,h}, guile/chpsim-wrap.{h,cc}
	  TODO: export more functions and operations on chpsim state.


	* HACKT-00-01-04-main-00-81-12:
	  Critical fix: hackt lexer was corrupting pointer due to improper
		pointer class assignment, which compiler SHOULD have rejected.
		Oddly, this problem manifested on g++-4.0.1, but not 3.3.
		Neither compiler caught the problem... because the only
		change was in the return type of the parse_to_AST prototype!
		This fix is only necessary relative to the recent -81-10 patch.
	  Added some debugging code to AST sources in the process.


2007-03-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-11:
	  Critical fix: globally allocated resource obj_module (libhacktwrap)
		won't necessarily be deallocated in time due to
		guile no-returning, thuse we must register a manual
		destructor using atexit(), which is the first thing called
		upon exit().  
	  This fixes memory leak false-alert in guile test cases.


	* HACKT-00-01-04-main-00-81-10:
	  Now use count_ptr instead of excl_ptr for all main_funcs, 
		so we can use reference-count tracking while loading
		dynamic shared libraries, and ensure proper lifetime.
	  Moved guile-related files to guile/ directory, some files
		were renamed, losing some early revision history...
	  Split off new guile/scm_reference.{h,cc} for the
		meta_reference_union* SMOB.  
	  TODO: chpsim guile wrapper leading into trace stuff...


2007-03-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-09:
	  Rewrote some wrappers to return strings rather than print them
		so other function can actually use them (renamed ->string).  
		Test cases updated accordingly.  
	  Eliminated some unnecessary default functions.  
	  Next revisions: guile wrapper code will migrate to guile/
		subdirectory.  
	  Future: pure scheme code will go into an scm/ directory


2007-03-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-08:
	  Makefile.am: adjusted some flags to hacguile automake vars.  
	  Object/ref/reference_set: added import interface to entry_collections.
	  main/libhackt-wrap.cc:
		introduced my first smob! meta_reference_union
			which we call raw-reference in the wrapper domain.  
		wrote more wrapped functions, improved diagnostics, 
		using scm_puts on ostringstream instead of cout directly.
		new: parse-raw-reference, print-reference-type, 
			collect-reference-subinstances.


2007-03-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-07:
	  hacguile now listed as optional program (depending on guile)
	  hacguile script mode suppresses prompt, interactive mode
		uses new prompt to distinguish from standard guile.
	  main/libhackt-wrap.cc: new interfaces
		print-reference-index -- print type[index]
		print-canonical-reference -- prints reference's canonical name
	  More portions of Makefiles made conditional on HAVE_LIBGUILE.
	  Added some first hacguile test cases to test/parser/connect.


2007-03-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-06:
	  Object/module.cc: added explicit template instantiations for
		match_aliases member function.
	  NOTE: we now require guile-1.8 until we have to time re-write
		wrappers for interfaces missing in guile-1.6.  
	  util/libhackt-wrap.cc: wrapped implementations of:
		parse_global_reference, lookup_reference_aliases.
	  see also util/ChangeLog.
	  TODO: hacguile tests! configury to make guile optional.  


	* HACKT-00-01-04-main-00-81-05:
	  Previous patch disabled, due to g++-3.3 ICEs, see util/ChangeLog.


	* HACKT-00-01-04-main-00-81-04:
	  No hackt source revision, see util/ChangeLog.


2007-03-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-03:
	  Created 'hacguile' guile-interpreter linked to object.  Yay.
		Now we should theoretically be able to do as we please
		in the scheme environment.  
	  No loadable scheme module yet...
		Not sure if this would work with --disable-shared.  


	* HACKT-00-01-04-main-00-81-02-merged-shlib-01-07:
	  Branch merge:
	  install-scripts replaced by shlib-linked executables.
	  chpsim functions implemented as visitors to facilitate
		library decoupling, and acyclic dependencies.
	  A few flags perm'd for maintainability and comprehensibility.
	  Validated on {powerpc,i686}-apple-darwin.  


2007-03-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-01-shlib-01-07:
	  sim/chpsim/EventExecutor.cc: helper class in wrong namespace.


2007-03-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-01-shlib-01-06:
	  Moved compile_options::export_include_path to main/main_funcs.cc.
	  Executables: hacpp (flatten), hacobjdump, hacalloc, hacprsim, 
		hacchpsim are all now dynamically-linked to shlibs.  
	  Observation: on powerpc-apple-darwin7, statically linked executables
		load much faster than dyld.  
	  End of branch.  


2007-03-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-01-shlib-01-05:
	  Perm'd CHP_BREAK_VALUES.


	* HACKT-00-01-04-main-00-81-01-shlib-01-04:
	  Perm'd CHP_ACTION_DELAYS.
	  TODO: dylib hacalloc, hacflat, hacprsim, and hacchpsim.


	* HACKT-00-01-04-main-00-81-01-shlib-01-03:
	  Perm'd CHPSIM_STATE_UPDATE_BIN_SETS.


2007-03-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81-01-shlib-01-02:
	  haccreate is now a executable linked to dynamic library.
	  Initial attempts at installing sub-libraries of libhacktlib.la
		resulted in unexpected intra-library dependencies, 
		will have to revisit later, some notes in Makefile.am.
	  Filtered out bunch of unnecessary headers in recently edited files.
	  More clean-up with committing switches...


	* HACKT-00-01-04-main-00-81-01-shlib-01-01:
	  This branch is for rearranging shared libraries.
	  This revision: 'haco' script is now built as an executable
		using shared library.
		Re-ordered some shlib dependencies, tentatively installing
		a few of them, gradually installing all of them.  
	  New: Object/lang/CHP_visitor.{h,cc}: re-directing all 
		chpsim functions involving CHP nodes through visitor
		interface, which slows down dispatches, but brings 
		better modularity and breaks cyclic library dependence.  
		New switch: CHPSIM_VISIT_EXECUTE in sim/chpsim/devel_switches.h
		Moved DependenceCollector to libhacktsim.la.
	  Added sim/chpsim/EventExecutor.{h,cc}: to encapsulate implementation
		of the old CHP::action::{execute,recheck}.
	  sim/chpsim/StateConstructor now implemented through visitor.
	  Added many explicit template instantiations to AST/ units
		to enable dynamic linking.  
	  main/cflat.cc: cflat_print_alias relocated to
		Object/inst/alias_printer.cc to break cyclic dep.
	  Confirmed with no regressions, also validated with --disable-shared.  
	  Next major clean-up: Object/lang/CHP_base.h, 
		commit some devel switches, reduce includes in newly
		affected files: Object/lang/CHP.*, sim/chpsim/EventExecutor.*


2007-03-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-81:
	  Dawn of a new epoch.  
	  Reworked guile-logo demo and examples to NOT use swig anymore, 
		thereby removing another bootstrap program dependency.  
	  From now on, we will write and maintain guile-scm wrappers by hand.  


2007-03-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-92:
	  yacc skeleton 1.14 (ships with Apple) assigns string literals
		to char*, which is deprecated and rejected by gcc-4.2.
		Added one more sed pipe (to const char*) to workaround this. 
		Added parser/yacc_const_char.awk patch script.  


2007-02-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-91:
	  Added a few explicit template instantiations in 
		Object/common/extern_templates.cc to pass -O3 on 
		i686-apple-darwin-g++-4.0.  dyld was failing on
		missing write_value template function.  
	  configury: ifstream/ofstream tests assume OK for cross-compile.


	* HACKT-00-01-04-main-00-80-90:
	  Testing with -O3 on suse-linux-g++-3.3 revealed one fatal error
		in test/parser/template/087.hac (expect fail), 
		caused by improper exception catching (by value, oops).
	  Gone through all code and fixed exception catching blunders.  
	  Tests now pass with -O3 on i686-suse-linux.  


2007-02-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-89:
	  Minor enhancements to util library (value_saver, stacktrace, 
		and static_trace), see util/ChangeLog.


2007-02-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-88:
	  Post-merge patching :S
	  Forced to rename files sim/prsim/{State,Command}.{h,cc} to
		work around dynamic linker object base name collision bug, 
		which ONLY manifests on i686-apple-darwin8 dyld, 
		when trying to run the built executable.  
		Sad consequence: break in continutity of revision history
			for those files.  
		May have to the do the same for chpsim's files to make way
			for future simulators.  
		Likewise had to rename {AST,Object,common}.sizes.{h,cc}.
		Observation: this only seems to occur in libhacktsim.la
			where objects with the same base name occur in the 
			*same* convenience library.  For example, AST/CHP.cc
			and Object/lang/CHP.cc don't have this problem.
		Considering filing a bug-report or asking on mailing list...


	* HACKT-00-01-04-main-00-80-87-merged-chpsim-03-10:
	  Branch merge: -chpsim-03
	  Summary:
		CHP added probe support (but not value probes)
		CHP statements can now be optionally prefixed with $(...)
			attributes, but currently only one delay
			value is supported (after=value).
		Supported delay expressions and event annotations in
			middle-end through CHPSIM.
		Added cast-conversion expression to intermediate rep.
		chpsim: update variable set re-structured to be sorted, 
			facilitating efficient watch/break point
			implementation.
		watch/break points are implemented w.r.t. events and 
			variables.  


2007-02-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79-chpsim-03-10:
	  Decided not to bother perm-ing switches from this branch, 
		let it mature for a few releases.
	  Updated comments and status remarks, and TODO lists.


	* HACKT-00-01-04-main-00-80-79-chpsim-03-09:
	  chpsim: new command 'print-event-header' to print the event 
		table header upon request.  
	  Added value-watch and value-break test cases to test suite.
	  Branch is done, possibly one more clean-up revision before merge.


	* HACKT-00-01-04-main-00-80-79-chpsim-03-08:
	  Added value-based (variable) watchpoints and breakpoints.  
	  Object/ref/reference_set.{h,cc}: added more aggregate set
		operations using STL set algorithms.  
	  TODO: test cases for break-value and watch-value.  
		maybe implement 'nobreakall-*' to allow run while
		sustaining breakpoints.  
	  This is the last feature before merge to trunk.  


2007-02-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79-chpsim-03-07:
	  Implemented watch/break points on events.
	  new chpsim commands: (mostly self-explanatory)
		break-event, unbreak-event, 
		unbreakall-events, show-event-breaks,
		watch-event, unwatch-event, 
		unwatchall-events, show-event-watchss
	  NOTE: breaks are subset of watches, and so maintained.
		Cannot unwatch a breakpoint, must use unbreak.  
	  CHPSIM::State's return type is now bool, 
		and used for break detection.  
	  Next: watch/break points on state values.  


	* HACKT-00-01-04-main-00-80-79-chpsim-03-06:
	  switch: CHPSIM_STATE_UPDATE_BIN_SETS (enabled)
		Instead of using a vector<pair<type,index> >, 
		we now use set<index>[types] to maintain update lists.  
		The motivation for this is linear time set operations
		when checking against watch sets and break sets.  
	  Added Object/ref/reference_set.{h,cc}.
	  Amazingly, no tweaks in test suite.  


2007-02-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79-chpsim-03-05:
	  Object/expr/convert_expr.{h,tcc}: cast/conversion of rvalues, 
		template class, but only instantiated for pint->preal.
		No parser interface yet, just internal use so far.  
	  front-end now checks a single attribute for CHP, event-delay, 
		and annotates CHP actions accordingly.  
		Will not bother generalizing attributes in middle-end yet.
	  Object/lang/CHP.cc: now dumps delay if applicable, 
		and applies delays to override default values 
		in constructed events.  
	  sim/chpsim/Event.cc: minor bug fix: delay member assignment
	  Test suite: added test cases for CHP delay, 
		including simulation tests with tracing.  
		Can demonstrate critical path tracing (visually).  


2007-02-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79-chpsim-03-04:
	  Punted general CHP attributes for simple-hacked in support 
		for action delay (prefix-notation).  
	  Added switch CHP_ACTION_DELAYS to disable if needed.  
	  TODO: unroll-resolve delay expressions, 
		and apply during event creation, 
		test cases using per-event delay, 
		update CHP event dumps to show delay


2007-02-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-86:
	  See util/ChangeLog for workaround to missing bitset::_Find_first().


2007-02-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-85:
	  Re-testing on powerpc-apple-darwin7-gcc-3.3, needed patch:
	  libhacktlib.la: needs a C++ source as a libtool hint for --tag=CXX
	  main/program_registry.cc: explicit template instantiation
		of count_ptr<program_entry::program_registry_type>.
	  util/memory/typeless_memory_chunk.tcc: .operator() for g++-3.3.


	* HACKT-00-01-04-main-00-80-84:
	  Minor 64b adjustments, see util/ChangeLog.


	* HACKT-00-01-04-main-00-80-83:
	  p{int,bool,real}_const.h: pool-sizes backed down to 32 from 64, 
		since we now use (experimentally) bitset for 
		memory chunk management.  
	  More memory-pool changes in util/ChangeLog.
	  With new arrangement of chunk_map_pool, no regressions.  


2007-02-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-82:
	  Lesson: don't name translation units with same name, even if they
		reside in different subdirectories.  On systems with
		case-insensitive filenames (darwin/HFS), libtool and the
		linker may be confused when moving and renaming object files.
	  Renamed sim/command.{h,tcc,cc} to sim/command_base.{h,tcc,cc}, 
		which fixes a "dyld: lazy symbol binding failed" error.


2007-02-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-81:
	  NEW: We are now using a massive installed dynamic shared library:
		${exec_prefix}/hackt/libhacktlib.la, 
		after I figured out BSD shared library issues.
		Basically, need to soft-link .libs locally when built
		executable is invoked out-of-path (done in test/).  
	  FreeBSD-4.3's installed executables don't quite work with shlibs, 
		something not quite right, use --disable-shared, until 
		I figure it out.  (There is no curse in perl appropriate 
		for this fiasco.)
	  BUG FIX: Latent lexer bug fixed: poorly initialized string_buf_ptr, 
		only exposed with shlib linking, possibly related to 
		static global initialization ordering.


2007-02-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-80:
	  After realizing that yacc builds had not been validated on FreeBSD
		for ages, I've discovered some issues and breakage.  :(
	  Fixage:
		parser/yygrowstack_yacc_hack.awk: possibly delay the rewrite
			of the prototype until after YYSTYPE's definition seen.
		parser/purify_yacc.awk: better pattern match for yyparse
			definition (beginning) to inject local variables.
		parser/*-parse-options.h: check for YYBYACC and define
			YYPARSE_PARAM_TYPE as needed (like bison)


2007-02-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79-chpsim-03-03:
	  Parser and AST revisions to allow attributes to be prepended to any
		CHP statement, intended to use for delay and assertions.
		New lexer token: '$'.  
		Updated one test case's compile-stderr (yacc-only).  
	  TODO: middle-end+ support and possibly a CHP attribute registry.
		Decide how to distinguish between compile-time (event-graph
		generation time) and run-time attributes/directives.  


2007-02-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79-chpsim-03-02:
	  Finished implementing channel probes through CHP and chpsim.  
	  Added 3 sets of test cases in test/chpsim with probes.
	  Value-probes probably won't happen on this branch, needs specs.


	* HACKT-00-01-04-main-00-80-79-chpsim-03-01:
	  Third epoch of chpsim features.
	  Proposals: add probe semantics (affects language front-middle ends)
		add CHP assert statements, add CHP wait statements, 
		chpsim: watch-*, break-*.
		May not get around to all of them this round...
	  This revision: added probe statements to parser and AST, 
		Object and CHP lang classes not done yet, coming up.  
		After grammar update, a few compile-fail expect dumps updated.
	  Added some exception classes for expressions, not yet used.  


2007-02-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-79:
	  Latent mis-packaging: EXTRA_DIST += parser/yacc-output-to-C.awk


2007-02-08	Nathan Smith	<nrs27@cornell.edu>			

	* HACKT-00-01-04-main-00-80-78:
	  Added chpsim simulation class command advance-to
		Will advance simulation time until all events up to <time> 
		are simulated, current_time is set to time of last executed event.


2007-02-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-77:
	  Don't use libc's tmpnam anymore, not using mkstemp either, 
		not using /tmp/ as temp file location, dodging inconvenience
		and necessary configury required.  Would rather use external 
		library (*ahem* boost), and wrap around file descriptor.
		Just append a suffix to call it a temp file.


	* HACKT-00-01-04-main-00-80-76:
	  Object/inst/instance_collection.cc:
		Added missing definition of instance_placeholder_base::null, 
		which should never be needed as a reference, only for 
		type deduction purposes (Object/common/namespace.cc).
		Again, discovered with -O0.  


	* HACKT-00-01-04-main-00-80-75:
	  sim/prsim/Node.cc: latent typo: harmless, misplaced return caused 
		unreachable code in dump_checkpoint_state().  
		Adjusted and retested.
		Thanks to Nathan's compiler/build for catching this one:
		gcc (GCC) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)
		CXXFLAGS with -O0 is what caught the dead code missing return.


2007-02-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-74-merged-exprloop-01-04:
	  Branch merge.
	  Summary: added support for loop expanded expressions in
		the meta language and non-meta language.
		e.g. (+:i:6: my_ints[i]) gives a sum of terms.  
		Only commutative and associative bool/int operators enabled.


2007-02-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-71-exprloop-01-04:
	  Basically tested nonmeta-expr loop expansions with CHP test cases.
	  Allow use of '^' operator in loop expressions, because '!='
		just doesn't make sense as an assoc operator for bools.  
	  Merge to trunk.  
	  TODO: post-merge, factor out AST loop construction code, to
		reduce copy-pasting.


	* HACKT-00-01-04-main-00-80-71-exprloop-01-03:
	  Finished writing loop_nonmeta_expr (untested) for use with CHP.
		Added Object/expr/loop_nonmeta_expr.{h,tcc}
		Publicized some necessary operator maps for convenience.  
	  AST/expr.cc: added operator check to reject boolean operators
		used on ints (nonmeta and meta exprs).
	  Test cases for loop-parameter expressions added to
		test/parser/flow.
	  Next: test loop_nonmeta_expr expansions in CHP.  


2007-02-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-71-exprloop-01-02:
	  Implemented loop_meta_expr template, based on pint_arith_expr, 
		pbool_logical_expr, and preal_arith_expr, and using
		their operator maps for consistency.  
		Had to publicize some member typedefs and maps on the way.
	  AST/expr.cc: implemented loop_operation::check_meta_expr(),
		correct a few minor typos in error messages.  
	  Object/persistent_type_hash.h: added loop_meta_exprs
	  Object/expr/expr_visitor.h: likewise.
	  sim/chpsim/DependenceCollector.h: likewise.
	  Next: implement AST::loop_operation::check_nonmeta_expr, (the
		only current undefined reference) and
		implement nonmeta expression counterparts.  


2007-02-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-73:
	  No source revision, documentation additions only (chpsim).  


2007-02-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-72-merged-chpsim-02-19:
	  Merge of second round of chpsim features:
		includes checkpointing, cause-tracking, and trace recording.
		includes some minor bug fixes along the way.  
		Added a timing mode using 'reasonable' delays by event.  


2007-02-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-19:
	  Perm'd CHPSIM_CHECKPOINTING switch.
	  Branch retired now.  Merge to trunk.  


	* HACKT-00-01-04-main-00-80-69-chpsim-02-18:
	  Perm'd CHPSIM_CAUSE_TRACKING switch.


	* HACKT-00-01-04-main-00-80-69-chpsim-02-17:
	  Perm'd CHPSIM_TRACING switch.


	* HACKT-00-01-04-main-00-80-69-chpsim-02-16:
	  Added chpsim -d <checkpoint> to print the object-independent
		dump of checkpoint contents (requires no object file).  
	  Branch is matured, next: commit some developer switches, then merge.


	* HACKT-00-01-04-main-00-80-69-chpsim-02-15:
	  chpsim's event queue now uses a multiset instead of priority_queue
		to guarantee stability w.r.t. ordering between events of
		the same timestamp.  Switch: CHPSIM_MULTISET_EVENT_QUEUE.
		I wonder if this is necessary for prsim as well...
	  Old test cases have been re-verified and updated accordingly, 
		the only differences were re-shufflings of events with the
		same time, now first-come-first-serve tie-breaker.  
	  Enabled all chpsim checkpoint tests -- *all passed*.


2007-02-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-14:
	  Minor bug fix: read() and reset() of data/channel state variables
		also unsubscribes all dependent events.  
		State::initialize(): forgot to clear the event-queue upon
			checkpoint loading.  
	  chpsim: added 'dump-state' command.  
	  To decide: whether or not to insert periodic checkpoints into
		saved simulation traces.  


	* HACKT-00-01-04-main-00-80-69-chpsim-02-13:
	  Added chpsim checkpointing and state diagnostic facilities, 
		enabled but yet untested.  
	  Refactored dependency functions in DependenceSet class.  


2007-02-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-71-exprloop-01-01:
	  Branch for adding support for meta-loop expressions to language.
	  This revision only added the AST class and updated the grammar
		specification, leaving some undefined references.  
	  TODO: write intermediate representation classes for expansion.  
	  TODO: update parser expects for affected test cases (yacc/bison).


2007-02-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-12:
	  State::step() now periodically checks progress for periodic
		automatic trace flushing, to use constant memory.  
	  Fixed minor diagnostic text-dump of trace file.  
		Added new multi-epoch test case to test/chpsim.
	  Next: checkpointing work.


2007-02-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-11:
	  Bug fixes from testing trace saving and dumping.  
	  Very basic tracing verified with trace-dump examination.
	  New trace commands:
		'trace-flush-notify' -- enable/disable auto-flush notifications
		'trace-dump' -- textual dump of trace contents, currently
			NOT attached to any object file, or chpsim config.


2007-01-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-10:
	  More trace read and dump methods all over.  
	  Next: testing and debugging traces.  


2007-01-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-09:
	  chpsim: added (untested) 'advance' command, since it'll come in 
		handy for trace testing.  
		'trace-flush-interval' to get/set trace flush interval, duh!
	  State: only show non-zero cause event IDs.  
	  TraceManager: temp file now an fstream, since we need to copy it.
	  Next: testing chpsim trace production, be able to read in traces,
		and produce some textual dump for verification.  


2007-01-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-08:
	  Added and enabled causality tracking of last-predecessor 
		event, untested.
		Commands to turn on/off causality reporting: 'cause' 'nocause'
		CHPSIM_CAUSE_TRACKING and CHPSIM_TRACING flags are messily
		intermingled, but all combinations should still work.  
	  Tracing can optionally keep track of event causality.  
	  TraceManager keeps a running count of events.  
	  channel_state_base::write(): only write data when data
		has been sent (full-bit set).  
	  Next: testing event causality tracking features.  
	  Soon thereafter: checkpointing for efficient trace playback.  


	* HACKT-00-01-04-main-00-80-69-chpsim-02-07:
	  Added some untested tracing code in State::step(), more to go.
	  Updated ofstreams to open in binary mode.  
	  Privated ostream operators for trace implementation details.  
	  Need to to some cause tracking, perhaps in event placeholders?


2007-01-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-06:
	  Added provisional trace-related commands to chpsim.  
		Added some basic trace interfaces to State.
	  Implemented majority of trace-writing functions in data structs.  
	  Implemented nonmeta_variables' trace-writing functions, 
		eventually need to something about trace-loading.  


	* HACKT-00-01-04-main-00-80-69-chpsim-02-05:
	  Early workings of chpsim trace data structures, in
		sim/chpsim/Trace.{h,cc}
	  Factored out a data-only channel_state_base class, to be used
		as the unit for channel trace recording.
	  Added state_data_extractor template policies to assist in
		trace-data extraction.  


2007-01-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-04:
	  Implemented basic rvalue/lvalue run-time bounds-check error 
		handling in Object/ref/simple_nonmeta_value_reference.tcc.  
	  Added bunch of test cases to exercise error handling.  


2007-01-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-71:
	  No *real* source revision.
	  Added toy logo project using guile/swig, future Easter Egg.  
	  Added minimalist configury for swig.  
	  TODO: learn more scheme, write chpsim-trace reader primitives.  


	* HACKT-00-01-04-main-00-80-70:
	  No source revision.  Top-level configury for guile.  


2007-01-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-03:
	  Added nonmeta-channel-reference exception generation and handling
		for out-of-bound indexed references, with reasonable
		error message.  
	  Added some test cases to trip them.  
	  Next: test error handling on bad lvalue and rvalue references.  


2007-01-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69-chpsim-02-02:
	  This patch assigns some questionably reasonable default delay
		value per event, based on event type.  
	  One test-case added to test/chpsim.


	* HACKT-00-01-04-main-00-80-69-chpsim-02-01:
	  New branch for second round of chpsim development.
	  Split up TODO into sim/prsim/TODO and sim/chpsim/TODO.
	  chpsim EventNode: added delay member with default value, 
		currently not set, but will be set during state-construction, 
		possibly overrideable at simulation time.  
	  chpsim command:
		'timing' <mode> -- set/get timing mode of sim.
			Added timing mode support to CHPSIM::State.
		Added one small (silent) test case for random timing.  
	  chpsim dot-graph: added option to display delays of events.  


2007-01-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-69:
	  No source revision.  Build system maintainence.  
	  Re-organized make scripts, with better internal re-usability.  
		Some targets were falsely built in the srcdir, 
		now fixed with srcdir_strip macro.  
	  .cvsignores now reference the $(srcdir), long forgotten update.


2007-01-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-68:
	  No source revision.  Only documentation tidbits.  


2007-01-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-67:
	  DO NOT USE flex 2.5.33.  I hereby blacklist it.  2.5.31 is ok.
	  Retested for flex-2.5.33, which has some issues, 
		but is now commonplace in distributions.  
		It still suffers from undefined __STDC_VERSION__ in
		C++ mode and a sign/unsigned comparison warning that is
		promoted to an error.  With this patch, passing
		CXXFLAGS=...-Wno-error should suffice to compile everything.
		Sadly, it crashes upon lexing... if you can't duck it...
	  lexer/purify_flex.awk: careful not to catch yy_init...(), 
		additional substitutions for yy_init_globals().
	  lexer/flex_lexer_state.h: include "util/size_t.h"
	  Makefile.am: lexer/*-lex-real.cc rules now include
		lexer/flex_lexer_state.h early to guarantee definition
		apears before rest of transformed source.  


	* HACKT-00-01-04-main-00-80-66:
	  BUG FIX: fatal typo in CHP meta-loop expansion, did not pass
		down the correct context ('cc' vs. 'c')
		Why didn't -Wunused -Werror trip this?
	  Quickly added support for metaloop-statement expansion:
		{,i:N: ... } and {;i:N: ... }
		parser/hackt-parse.yy.in updated easily
		AST/CHP.{h,cc} extended accordingly
		Object/lang/CHP.{h,cc} copy-modified likewise
		and one lonely test case added (which caught the bug)


2007-01-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-65:
	  Post-merge maintainence:
	  Object/inst/instance_collection.tcc: long complicated statement
		involving template and overloaded [] causes ICE in g++-3.4.0.
		Split up with explicit typename to circumvent.  
	  Object/ref/simple_nonmeta_value_reference.tcc: Likewise
	  Updated TODO lists and BUILD report.


2007-01-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-64-merged-chpsim-01-54:
	  Massive chpsim-01 branch merge.  Summary:
	  First release of chpsim.
		prsim-like command-line interface.
			reads object file, allocates simulation state...
		prints dot-graphs of events (VERY useful)
		truly concurrent and event-driven execution, 
			executes CHP semantics precisely.  
		execution based on subscribing to variables upon blocking, 
			rechecking upon notification of update, 
			and unubscription upon enqueuing for execution.  
			Block dependency sets are evaluated conservatively
			using may-reference sets.  see CHPSIM::State::step().
		brief help for all commands: "hackt chpsim -h"
	  chpsim comes with a bunch of examples and test cases in test/chpsim, 
		which helped catch and fix the infancy bugs.  
	  Compiler infrastructure for non-meta variables and run-time
		state information is completed, as was required.  
		Includes nonmeta_{variable,state,context} family of classes.
	  A ton of code re-used fom prsim command classes, after template-ing.  
	  Regression: Disabled middle-end support for user-defined channels
		and user-defined datatypes.  (Never worked anyways...)
	  channel meta-type tag now corresponds only to built-in channel types.
		Key implementation in canonical_fundamental_chan_type_base.
	  TODO: list of chpsim tasks to do.
	  Merge also brings in miscellaneous global Makefile touch-ups.  


2007-01-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-54:
	  Added some graph options to fine-tune chpsim dot-graph dump, 
		but will not complete until after branch merge.  
	  Added "sim/chpsim/devel_switches.h" to development.  
	  Merge up to trunk!


	* HACKT-00-01-04-main-00-80-63-chpsim-01-53:
	  chpsim-event Dot graphs now have guard labels on outgoing
		edges of selection nodes.  Dude.  Sweet.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-52:
	  No source revision, only new test cases.
		Added new test-only directory test/chpsim/testlib.
	  Next: make dot-struct graphs from chpsim more informative.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-51:
	  chpsim new commands:
		'run' -- go until event queue exhausted, or interrupt, 
			Ctrl-C (SIGINT) works.  (like prsim:cycle)
		'subscribers' <name> -- list events subscribed to the
			named instance.
		'subscribers-all' -- list all instance with their
			subscribed events.
		'dump-event' <index> -- prints structural and status 
			information about the indexed event.
	  Implemented the obvious functions needed for the above commands.  


2007-01-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-50:
	  No source revision.  Another batch of tests:
		arbitration, selection exclusion violation, selection nesting.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-49:
	  lang/CHP.cc: (bug fixes)
		nonmeta_guard evaluator, only add the
			else-clause event if the match-list is empty.  
		selection::recheck():
			reset own event countdown as if executed normally
		join-event construction:
			don't pass self action pointer, or it will be
			wrongfully rechecked at join-time, duh!
	  sim/chpsim/Command.cc: try-catch safety net for execution exceptions
	  added more items to TODO under chpsim.
	  Fresh batch of selection-related test cases to test/chpsim.
	  Almost ready for first release onto main trunk, just a few more
		batches of chpsim tests.  


2007-01-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-48:
	  CHP::action::recheck() now returns a more meaningful flag set
		indicating action taken by the callee, and to be taken
		by the caller.  New enumerations allow us to suppress
		subscription activity for events that never block.  
		New enum values in "sim/chpsim/Event.h".
	  CHP::guarded_action::unroll_resolve_copy, minor fix, 
		forgot NULL (skip) statement case.  
	  Folded subscription work into EventNode::recheck().
	  CHPSIM::nonmeta_context: added back enqueue_list member
		to allow events to directly enqueue (only selections!)


	* HACKT-00-01-04-main-00-80-63-chpsim-01-47:
	  No source revision, no new bugs found.
	  Another batch of new chpsim tests in test/chpsim, 
		stressing do-while loops, concurrency, 
		and some condition waiting.  


2007-01-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-46:
	  Along with new tests, come new bug fixes.
	  Front-end do-while tree checking was broken before, now fixed.  
	  CHPSIM::StateConstructor: privatized state.event_pool to prevent
		screw-ups, now provide an event-allocate/deallocate 
		interface, which uses a new free-list member to recycle events.
	  Fixed event allocation and reuse in do-forever loop
		and do-while loop.  (was a pain to debug...)
	  Do-while event, suppresses successor event generation if 
		the last_event_index is null (terminal).
		Also a fixed a missing array index indirection.  
	  chpsim new commands:
		'null-event-delay' can set the delay of "trivial" events
		'uniform-delay' can set the uniform delay unit
		simulator uses these to determine time of new events.  
	  New chpsim tests try various combinations and positions
		of simple do-while loops.  


2007-01-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-45:
	  No source revision.
	  Added a bunch of new small tests to test/chpsim, 
		so far things look good.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-44:
	  Global Makefile.am clean-ups for sanity and maintainability.  
	  Added some items to TODO lists for future reference.  


2007-01-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-43:
	  Minor patch: Some explicit template instantiations to satisfy -O3.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-42:
	  Added channel_data_dumper functor class for printing, 
		analogous to channel_data_reader for extraction.  
	  Added virtual datatype_definition_base::dump_channel_field_iterate()
		to print out data in formatted fashion from channel fields.  
	  Implemented instance_reference::lookup_top_level_reference
		returning a global_indexed_reference (type-enum, index)-pair.
	  parser/instref.cc: implemented parser::parse_global_reference, 
		to lookup a string into a global_indexed_reference.  
	  chpsim: new command 'get' to print value of any instance or 
		state of any channel.  
	  Added new test cases to demonstrate chpsim:'get'.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-41:
	  Now decrement predecessor countdowns properly upon event execution, 
		using new helper functor EventNode::countdown_decrementer.
	  Class clean-ups: nonmeta_context, CHPSIM::State
		better member privatization and member forwarding.  
	  No new test cases this round, but coming next.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-40:
	  Committed development switches USE_NONMETA_RESOLVE and
		ENABLE_CHPSIM_EXECUTE.  
	  Next: fix countdown (forgot to decrement), should be done in 
		CHP::action::execute().
	  Let the flood of test-cases begin!


2007-01-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-39:
	  Minor patch: cleaned up CHPSIM_EVENT_GUARDED, CHPSIM_DIRECT_ENQUEUE.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-38:
	  Oh, joy! successfully simulated a source-sink pair in chpsim!
	  chpsim::EventNode: no longer carries a guard-expression with it, 
		greatly simplifying things.  (1 regression test updated)
	  CHP::action::execute:
		properly select successor events for rechecking.
		re-implemented selections' ::execute() to perform recheck.  
	  chpsim added commands:
		'watchall-events' print all events as they occur, 
		also 'nowatchall-events' to disable.  
	  Test suite: added support for chpsim run-commands tests, including
		the maiden test: parser/channel/connect-038-a.chpsimrc
	  Next: some cleanup CHPSIM_EVENT_GUARDED, CHPSIM_DIRECT_ENQUEUE.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-37:
	  channel_data_reader_base: fixed wrong bound-check assert.
	  nonmeta_variable_base: added subscribe/unsubscribe wrappers.
	  Rewrote DependenceSet using meta-tag template base classes, 
		added enum support.
	  Rewrote DependenceSetCollector using meta-tag template base classes, 
		completed enum support, cleaned up visit() definitions.
	  CHPSIM::State:
		recheck_transformer re-written: wrap a nonmeta_context member, 
		now calls subscribe/unsubscribe depending on whether event's
		recheck results in blocking (pending) or unblocking (enqueue).
	  CHPSIM::nonmeta_context: no more direct access to __enqueue_list.
	  Next CHP::action::execute() should be responsible for
		enqueuing successor events, which depends on whether
		or not it is a selection-type of event.  
	  Added some items to TODO list for chpsim.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-36:
	  Global clean-up patch:
		Replaced error prone uses of footprint_frame::get_frame_map
		with equivalent (more consistent) use of the helper
		functor, footprint_frame_transformer.  
	  Wrote global_entry_context::lookup_meta_reference_global_index()
	  Wrote nonmeta_context_base::lookup_nonmeta_reference_global_index()
	  Next: back to chpsim tests.


2007-01-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-35:
	  First signs of life in chpsim, debug-trace-testing
		a source-sink test case (parser/channel/connect-038.hac).
	  Reworked chpsim event dot-graph printing, adding graph-options, 
		now defaulting to printing event index in output.  
	  Sprinkled stacktrace statements in chpsim execution trace.  
	  FIXED: some wrong calls to lookup_globally_allocated_index
		now substituted with (new) lookup_locally_allocated_index, 
		because reference and context were not from top-level.  
	  chpsim::DependenceSetCollector: disabled off visitation
		of meta references (suspiciously wrong and never reached), 
		also enabled enum_set member for enum support.  
	  Next: re-factor some meta-reference lookup code into
		global_entry_context, for consistent re-use.
	  chpsim: fix step(), event subscription and unsubscription
		w.r.t. updated references.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-34:
	  Implemented nonmeta_state reset for chpsim.
	  Enabled a stripped down 'step' command in chpsim for testing.
	  Implemented some diagnostic routines for chpsim State.  


2007-01-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-33:
	  Completed CHP::channel_{send,receive}::execute().
		Wrote channel/read/write interface functors in
			"Object/nonmeta_channel_manipulator.h".
	  data_expr: added virtual evaluate_write() for
		channel data packing.
	  data_nonmeta_instance_reference: added virtual direct_assign()
		for channel data unpacking.  
	  Moved sim/chpsim/type_enum.h to Object/ref/reference_enum.h for 
		tool-independent consistency.  
	  Object/inst/instance_alias_info.h: deleted obsolete
		member-lookup member-functor.  


2007-01-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-32:
	  Defined fundamental_channel_footprint as just a collection
		of sizes to allocate nonmeta_state's ChannelData fields.  
	  nonmeta_state_manager: now allocates ChannelData fields corresponding
		to fundamental channel type upon construction.  
	  main/chpsim.cc: pre-caches all fundamental_channel_footprints
		before constructing CHPSIM simulator state.  
	  virtual datatype_definition_base::count_channel_member() implemented, 
		to accumulate size of field over meta-types.  
	  TODO: add support for sized-types and arrays (later).  
	  Next: finish implementing channel_send/receive::execute().


	* HACKT-00-01-04-main-00-80-63-chpsim-01-31-merged-channel-04:
	  Child branch merge.  Summary:
		Displace generic (incomplete) channel type mechanism with
		only support for built-in channel types.  
		Built-in channel type instantiations are maintained
		uniquely using a global ordered set of them, thus eliminating
		unnecessary replication.  
		Allocation now establishes channel types per global channel
		entry, now usable to the simulation environment.  
	  Regressions: front-end support for user-defined channel types has
		been dropped, but never worked fully to begin with.  


2007-01-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-30-channel-04:
	  Finally established built-in channel fooprints for global
		channel entries (alloc phase).
	  entity::footprint: implemented __set_channel_footprints()
		for top-level post-allocate type assignment.
	  Enabled and verified alloc tests in parser/{chp,channel}.
		Channel entries are properly allocated and 
		reference correct canonical_fundamental_chan_type_base's.  
	  This concludes work on this branch -- merge to parent branch.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-30-channel-03:
	  Now all canonical_fundamental_chan_type_base's "are belong to"
		the global registry, all ref-counted, now also pool-allocated.
		The global canonical pointers are restored upon persistence
		de-serialization, using wrapped interfaces to
		static member functions write_pointer/read_pointer.  
		Object/type_reference.cc: also use register_globally().
	  Bug fix from previous rev.:
		Corrected operator < of canonical_generic_datatypes, 
		forgot to compare parameters lists, duh.  
	  As a result of sharing built-in channel type pointers, 
		binary footprints have shrunk, thanks to reduced replication.
		channel and CHP test cases updated accordingly.  


2007-01-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-30-channel-02:
	  Added new specializations for instance management for 
		built-in channel types:
		channel_collection_type_manager (collection) and
		channel_instantiation_type_ref (instantiation_statement).
		Policies are reflected in "Object/traits/chan_traits.h"
	  Factored canonical_fundamental_chan_type_base (without direction)
		and use a ref-counted pointer in the type with direction.  
	  Dropped support for user-defined channel types in front-end
		as well as middle-end.  
		Withdrew all affected regression tests: 
			parser/connect/{086,086a,086b,087}.hac
			parser/channel/018.hac
		No other regressions.  
	  Next: register canonical_fundamental_chan_type_base with
		global instantiated set to share pointers.  


2007-01-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-30-channel-01:
	  This branch is intended for reworking the channel meta-type
		system for CHPSIM.  This branch will displace intermediate
		representation support of user-defined-channels (which have
		never been clearly specified to begin with *ahem*)
		in favor of built-in channel types.  
	  Added Object/global_channel_entry.{h,cc} (specialization).
	  Added Object/type/canonical_fundamental_chan_type.{h,cc}.
	  Defined a total-ordering for fundamental data-types: 
		bool, int, enums.  No user-defined data-types are allowed yet.  
	  Enabled BUILIN_CHANNEL_FOOTPRINTS switch, but is incomplete.
	  Test suite shows no regressions.  


2007-01-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-30:
	  Re-structured global_entry_base and substructure parent, 
		less template code replication, and will make way for
		built-in channel specialization.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-29:
	  class_traits<channel_tag>::has_substructure is no longer true:
		built-in channels do have named subinstances, and thus do
		not need to be handled like process-ports.  
		Channels are now treated as leaf types, as far as global
		allocation and referencing is concerned.  
		Channel fields are non-aliasable, they have value-semantics.  
		parser/{chp,channel} create tests updated because of
		small decrease in binary sizes.  
	  Changes are wrapped around switch BUILTIN_CHANNEL_FOOTPRINTS.
	  TODO: built-in-channel-footprints for the sake of allocating
		ChannelState and ChannelData fields.  
		Need to extend global_entry<channel> with info field.


2007-01-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-28:
	  Removed Object/inst/substructure_alias_base.tcc (obsolete).
	  Starting to plan for global_entry<channel_tag> for simulation state.
	  Temporary definitions for channel_{send,receive}::execute().
	  More source documentation in comments.  


2006-12-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-27:
	  Implemented most of remaining execute/recheck CHP functions, 
		only send/receive left (all untested).
	  Need to define some sort of CHP footprint or general method for
		allocating ChannelData field members or use footprint.
	  Reminder: execute/recheck moves successors to the recheck/enqueue
		queues depending on the event type.  
	  CHPSIM::nonmeta_context now has a recheck queue for listing
		successors to check.  


2006-12-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-26:
	  Cleaned up some of last revisions changes.  
	  Re-enabled ENABLE_CHP_EXECUTE switch, implemented more
		CHP::action::execute and ::recheck methods, but still
		some remain undefined (link fail).  
	  Moved global ID lookup function to global_entry_context, 
		for more convenience and consistent reuse by context classes.
		Added Object/global_entry_context.tcc.
		Implemented simple_nonmeta_{instance,value}_reference::
			lookup_nonmeta_global_index().  
	  CHP::action::recheck now returns a bool to indicate whether or not
		the *invoking* event should be enqueued for execution.  
		In other cases, the event's successors are selected from.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-25:
	  Rewrote a bunch of instance-reference lookup functions to take
		a bundled global_entry_context argument for ease of 
		maintainence and correctness-reasoning.  
	  nonmeta_context_base new derived from global_entry_context
		for lookup consistency.  
	  SIM::CHPSIM::DependenceSetCollector now derived from
		global_entry_context for consistency.
	  enum_expr: now tentatively uses pint_const as its nonmeta
		representation type. 
	  Object/lang/CHP.cc: partial implement execute() and recheck().
	  Implemented draft of simple_nonmeta_value_reference::nonmeta_assign.


2006-12-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-24-merged-expr-07:
	  Sub-branch merge.  Summary:
	  Implemented nonmeta expression resolution in expr class hierarchy, 
		although is only a rouch untested draft.
	  Rewrote a few pieces of CHPSIM engine to use new nonmeta expression
		resolution.  
	  Disabled use of user-defined data-types because their semantics
		w.r.t. values and references are not defined.  
	  No regressions from branch, only new untested features.
	  Better re-organization of some sources and classes, 
		between simulator-dependent and independent structures.  


2006-12-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-07:
	  Clean-ups only, removing obsolete files and references before merge.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-06:
	  Finished (untested) simple_nonmeta_value_reference run-time lookup.
	  Moved CHPsim-specific nonmeta context class into sim/chpsim.
	  Added enum member instance to nonmeta_state.
	  Added missing value field to *Variable (nonmeta) classes. 
	  Rewrote CHPSIM::execute to pass bundled reference context argument.
	  Branch pretty much ready to merge, though untested.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-05:
	  It compiles and links again!  (untested)
	  Completed resolution of nonmeta-indices, which currently
		forbids use of ranged expressions in indices.
	  Could use better error handling.
	  Next: simple_nonmeta_value_reference's implementation for nonmeta
		resolving data-type value collections, using meta-tag.


2006-12-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-04:
	  Refactored some of nonmeta_value_reference resolution code for
		better re-use, less duplication.  
	  Next: need nonmeta-resolution of nonmeta-indices.


2006-12-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-03:
	  More implementation of nonmeta_resolve methods.  
		Added __nonmeta_resolve_rvalue helper method.  
		param consts' nonmeta_resolve_copy defers to base classes now.
		remaining undefined references to simple_nonmeta...
	  TODO: __unroll_resolve_rvalue and __nonmeta_resolve_rvalue:
		re-use them in common virtual function in meta-expr base class.
		Only override for const_collection and other aggregates.  
	  Consider returning plain values instead of ref-count ptrs
		in nonmeta resolution, even pool-allocated may bottleneck.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-02:
	  Re-wrote nonmeta_resolve_copy using unroll_resolve_copy
		for meta-expressions (compile-time), thereby reducing number
		of repetitive functions to implement.
	  Added top-level footprint reference to nonmeta_context_base for
		top-level value references, used to make an auxiliary
		unroll_context.  
	  Remaining: nonmeta expressions resolution (does not link).


2006-12-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-23-expr-01:
	  This sub-branch is for implementing run-time expression resolution
		of nonmeta expressions and references.  
	  In this initial revision:
		we tentatively disable all uses of datastruct_tag because
		they were never well-defined (value semantics?) and inhibit
		implementation of nonmeta expression evaluation without
		ugly and meaningless hacks in traits classes.  
		switch: ENABLE_DATASTRUCTS in Object/devel_switches.h
		Consequently, footprints and all other structures with
			datastruct components have changed size, 
			so test cases have been updated accordingly.
		Regression introduced: can no longer instantiated
			user-defined types, which were never used anyhow.
		Must wait until semantics for those types are better defined.
	  Method prototypes for nonmeta_resolve_copy() are written, 
		but switch-disabled in this revision.


2006-12-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-23:
	  Re-wrote event filter/transformations.
	  Factored out tool-independent nonmeta_context_base for
		run-time evaluation.  
	  Next: nonmeta_expression resolution, on branch.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-22:
	  Worked out more top-down flow code for CHP event execution.
		Missing implementation details, still undefined references.  
	  nonmeta_context is (unfortunately) now tied to CHPSIM's 
		implementation, with reference to CHPSIM::EventNode.


2006-12-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-21:
	  Moved much of CHPSIM state structures to more accessible
		files and namespaces -- they are now part of the context
		class used to resolve run-time values.
	  Obsolete: sim/chpsim/{Channel,Variable,InstancePools}.*
	  This snapshot has missing definitions for CHP::action::execute().
	  Next: CHP and nonmeta expression resolution (virtual) functions, 
		and then CHP execute, with lvalue/rvalue distinctions.


2006-12-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-20:
	  Privatized member implementations of entity::footprint, 
		namely PRS::footprint, chp_footprint, SPEC::footprint.
		This breaks an unnecessarily deep chain of header
		and definition dependencies, thereby speeding up recompiles.


2006-12-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-19:
	  Factored out sim/prsim/Event.h template classes into sim/event.h.
	  Added event-queue structure to CHPSIM::State.
	  TODO: main step-execution loop of CHPSIM::State, and general
		event execution and handling. 


2006-12-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-18:
	  Wrote 'dot' event graph dumper for chpsim events.  
		run: hackt chpsim -fdump-dot-struct <obj>
	  Test suite now supports testing chpsim dot graph generation.


2006-12-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-17:
	  Loop-back event slot recycled, no more null-waste.
		Defined operator = for Event and DependenceSet for 
		move semantics because std::valarray does not use
		container move semantics (only element copy, no-resize).  
	  Updated test-cases accordingly.  
	  Next: graphical representations of event graphs.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-16:
	  Now using event[0] as the reserved fork-event for launching
		the simulation by spawning initial events.  
		chpsim alloc test dumps updated accordingly.  
	  Next: loop-null event folding to eliminate waste.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-15:
	  More chpsim graph fixes and test cases (a bunch).
		Forgot to count_predecessors in a few places.  
	  Next: list of initial events to launch.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-14:
	  Factored out may_reference lookup (nonmeta) into separate file, 
		eliminating duplicate maintainence through template.  
		Also fixed wrong dependence index bugs, 
		and copy-loops re-written functionally.
	  chpsim/DependenceCollector.cc: fixed index translation by
		conditionally transforming through footprint frame.  
	  Object/global_entry.h: struct footprint_frame_transformer
		useful functor for iterating and transformation.  
		Should use this more where same operation is expressed, 
		but now in more functional form.  
	  Object/inst/instance_alias_info.h:
		ptr_to_index_transformer functor that dereferences pointer
			and grabs the instance_index member.  
	  TODO: more and more test cases...


2006-12-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-13:
	  First batch of chpsim event allocation dump tests! (parser/channel)
	  And with it, first set of buglet fixes:
		Object/lang/CHP.cc: 
			Suppress listing of null-event as a successor.
			Evaluate static dependency sets for all types of 
				events that need them (blocking).
	  TODO: 6 of the new tests produce incorrect dependencies, fix them.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-12:
	  Finished DependenceCollector visitor methods, but untested so far.
		simple_nonmeta_value_reference::lookup_may_reference...
		implementation ripped off of instance_reference's.
		Need to check intermediate dumps of dependency sets.  
	  Compiles and runs, no regressions.  


2006-12-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-11:
	  Minor patch: fixed kludge with const_cast-ing footprint pointers
		by replicating pointer members in unroll_context.
		That's one less hack to have to document/explain/remember...
	  Back to finishing CHPSIM::DependenceCollector...


	* HACKT-00-01-04-main-00-80-63-chpsim-01-10:
	  Links, but DependenceSetCollector temporarily disabled.
	  Fixed minor regression cause by last revision, regarding
		unroll_context and its target footprint.  
		Temporary workaround const_cast-ing, will fix properly next.
	  Added: instance_collection::get_all_aliases() unstructured
		collection of aliases.  
	  simple_meta_instance_reference::lookup_globally_allocated_indices():
		relocated to meta_instance_reference::...()
		for trivial reuse.  
	  Added: simple_nonmeta_instance_reference::lookup_may_reference_global_indices():
		still yet untested, should grab conservative set of
		referenceable aliases for static dependency sets.  


2006-12-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-09:
	  This snapshot doesn't link.
	  Added visitor interface to expression and reference hierarchy, 
		affects most Object/{expr,ref}/* files.  
	  Added accessors to unary and binary expressions for convenient
		and consistent visitation.  
	  unroll_context: new constructor taking const footprint*s for both
		argumenst, when context is only used to lookup (no target).
	  CHP::concurrent_actions::accept(StateConstructor&):
		check for degenerate cases of 1 or 0 branches.  
	  CHP::deterministic_selection::accept():
		visit branch guards to collect static dependencies
		in progress...
	  *_meta_instance_reference::lookup_*: argument updated to
		be just const footprint& b/c only used to lookup, no target.
	  CHPSIM::StateConstructor::visit() fix:
		reset last_event_index before each iteration.  
	  Next: finish and test dependency collectors: for aggregates
		and nonmeta references and collections.  


2006-12-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-08:
	  Started bunch of diagnostic/dump routines to scrutinizing
		the allocated state and event graph nodes.  
	  More options to main/chpsim.
	  Developed more chpsim state data structures: Channel*, Variable*.
	  Planning for event subscriptions to variables using
		statically computed dependence sets.  
	  TODO: evaluate conservative static dependence sets for every event, 
		probably during event construction pass.


2006-12-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-07:
	  Loaded chpsim with basic commands.
	  Recycled tons of prsim command code into templates for re-use.  
	  New: sim/command_builtin.{h,tcc,cc} -- for state-independent base
		implementations for template-wrapped state-specific adaptations
	  New: sim/command_common.{h,tcc} -- template command classes
		for trivially different state-specific implementations
	  TODO: allocate simulator state


2006-12-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-06:
	  Re-factored bunch of old prsim command registry code into
		re-usable template code for chpsim.
		Populated chpsim's interpreter with basic commands, 
		while other un-ported commands are disabled.  
		TODO: factor state-indepdent built-in commands.  
	  sim/state_base.h: new base class for simulator states, 
		also includes overrideable prompt string.  
	  sim/command_registry.*: factored out state-indepdendent
		aliases functionality.  


2006-12-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-05:
	  Factored out prsim Command classes into re-usable template
		class to reuse with chpsim.  
		New: sim/{command{,_category,_registry}.{h,tcc,cc}, 
		and pulled out signal_handler (SIGINT) into re-usable class.
	  main/chpsim.cc: added more disabled code, following prsim's main.
	  TODO: un-hardcode the command prompt.  :)


	* HACKT-00-01-04-main-00-80-63-chpsim-01-04:
	  Finished first draft of CHP whole-program graph construction, 
		using reverse (successor to predecessor) ordering.  
	  devel_switches TODO: privatize implementations of 
		PRS and CHP footprints in entity::footprint.
	  Some semantics documentation done in dox/lang/.
	  TODO: visualize whole-program CHP graph construction, 
		and write dumpers for diagnostics.


	* HACKT-00-01-04-main-00-80-63-chpsim-01-03:
	  Fleshing out more of CHP Event graph structures, and the
		graph-construction pass.  Much more to come.  
	  TODO: document decisions about CHP and nonmeta-index
		dependent guard expressions.  


2006-12-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-chpsim-01-02:
	  Supplied empty definitions for CHP::action::accept(), 
		taking CHPSIM::StateConstructor.  (Poor use of OO.)
	  More members added to CHPSIM::State.  
	  main/chpsim.{h,cc} outlined, replacing old dummy program.  


	* HACKT-00-01-04-main-00-80-63-chpsim-01-01:
	  Starting to accomodate chpsim state allocation, much more planning
		to do.  Also need to resolve interpetation of nonmeta-index
		dependent expressions in guards (non-atomicity).  
	  Does not link, missing new definitions in CHP actions.  


2006-12-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-63-merged-channel-02-09:
	  Branch merge.  Summary:
	  Unroll phase has been fused into create phase, and now deprecated.
		This in turn, has required us to disable all unroll-related
		tests, so currently there are about 4269 tests remaining.  
	  Additions to direction/connection checking of channels:
		Connectivity state is now propagated up hierarchically
		through formal alias summaries (callee to caller).  
		Cannot mix meta and nonmeta channel references, 
			non-meta referenced channels are basically unaliasable.
		Added bunch of tests cases for these rules.  
	  Next: built-in channel footprints for state allocation for chpsim.  


2006-12-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-62-channel-02-09:
	  Perm'd PROPAGATE_CHANNEL_CONNECTIONS_HIERARCHICALLY.
	  Now issue 'deprecated' warning when 'unroll' is run.  
	  Next: develop footprints for built-in channel types, 
		and some sort of mapper to manage them.  
		May do this on new branch instead.  


	* HACKT-00-01-04-main-00-80-62-channel-02-08:
	  Perm'd NEW_CONNECTION_FLAGS.
	  Updated channel connection documentation in dox/lang.
	  Next: perm PROPAGATE_CHANNEL_CONNECTIONS_HIERARCHICALLY.


	* HACKT-00-01-04-main-00-80-62-channel-02-07:
	  Added better checks for meta/nonmeta mixing during CHP
		traversal of channel references.  Now mixing meta 
		references with non-meta references is forbidden, 
		this is enforced by checking the canonical aliases.
		In general, this means nonmeta-referenced channels
		are NOT aliasable.  What not checked yet: connecting
		nonmeta aliases from *different* collections.  
		So we may need one final pass over channel alias sets
		to check for uniqueness among nonmeta-referenced collections.
		Should nonmeta referenced channels be restricted to 
		self-aliases (unique) only?  
	  Note: non-directional channel ports have always been allowed, 
		and will remain so.  Warnings of dangling channels
		are always in effect.  
	  Added bunch of test cases for the above checks to parser/channel.
	  Next: perm the NEW_CONNCTION_FLAGS, but update comments.  


2006-11-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-62-channel-02-06:
	  Remaining 2 regressions fixed.  Wasn't updating flag properly 
		upon propagation of formal to actual connected channel.
		We now succesfully propagate local, directional connectivity 
		information up through ports from callee to caller.


	* HACKT-00-01-04-main-00-80-62-channel-02-05:
	  New set of direction-connection flags for clarity.  
		Same two regressions remain, fix next.  


2006-11-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-62-channel-02-04:
	  Minor patchlet: expanded direction fields to short to accommodate
		new flag set for direction checking.  
		Updated test expects for footprint size increase accordingly,
		still same 2 regressions to fix next.


	* HACKT-00-01-04-main-00-80-62-channel-02-03:
	  Some regression fixes involving hierarchical channel 
		connectivity checking.  Only 2 regressions remain
		with the following issue:
		regarding the CONNECTED_CHP_PRODUCER/CONSUMER flags, 
		we need to disguish between a CHP 'connection' that
		resulted from a substructure, vs. a local (this scope)
		CHP connection.  Walking a CHP body should set the local
		variant of the flag, while inheriting a flag from 
		formal to actual should use the substructure variant.  
		We forbid  connecting a channel to CHP in both local
		and substructure context, unless we add future support
		for sharing CHP connections between hierarchies. 
		Next revision will address this.  


2006-11-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-62-channel-02-02:
	  No source revision.
	  Test suite has now disabled unroll tests.  
		See test/ChangeLog.
	  Top-level configure now has option to re-enable them, 
		but don't expect them to pass because they are no longer
		updated, they correspond to old (correct) behavior.  
	  Test suite: promoted many unroll-fail tests to create-fail tests.
		Updated trivial cases, and left less trivial differences
		as regressions (numbering 16 total, all in parser/channel).
	  TODO: use UNIFY_UNROLL_CREATE flag to issue deprecation
		warnings when using unroll (in main programs).  


	* HACKT-00-01-04-main-00-80-62-channel-02-01:
	  Enabled PROPAGAATE_CHANNEL_CONNECTIONS_HIERARCHICALLY.  
	  Canonical types now must be complete (including relaxed actuals
		where applicable) before unrolling, else will be rejected
		with diagnosis.  
	  Added return value to most unroll_port functions, 
		and catch exception elsewhere for port error handling.
	  This causes regressions on nearly all unroll tests because
		unrolling now requires dependent types to be fully-created.
		The post-unroll dumps resemble create-dumps.  
	  Next: update tests


2006-11-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-62:
	  Enabled AUTO_CACHE_FOOTPRINT_SCOPE_ALIASES, which results in
		footprint object binary significant size reduction, 
		at the expense of a little more run-time for reconstruction.


	* HACKT-00-01-04-main-00-80-61:
	  Enabled COPY_IF_PORT_ALIASES, no regressions.  
	  Rewrote collect_port_aliases in functional style.  
	  Next: enable AUTO_CACHE_FOOTPRINT_SCOPE_ALIASES and update tests.


	* HACKT-00-01-04-main-00-80-60:
	  New switch COPY_IF_PORT_ALIASES (disabled) uses a simpler
		pass to collect sets of port aliases (port_alias_tracker).
		Affects: footprint and port_alias_tracker.
		Deletes bunch of unnecessary functions too.
		Perm this later.
	  Memory hog fix: subinstances scope-aliases were being multiple
		counted during collect_port_aliases because collection
		pool managers were traversing port_actual_collections, 
		which were already recursively covered by their parents!
		Saves another factor of 2 size on large footprints!
		Test cases updated accordingly.  
	  Minor additions in util/ChangeLog.  
	  Next: enable COPY_IF_PORT_ALIASES


2006-11-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-59:
	  No source revision, only dox/ChangeLog maintainence, 
		purging references to maketexdepend.


2006-11-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-58:
	  No source revision.
	  See dox/ChangeLog -- LaTeX dependency management improvement.


2006-11-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-57-merged-channel-01-09:
	  Merged channel-01(-09) branch.
	  Summary: channel aliases now have directional connection
		semantics -- each alias (set) having producer/consumer flags.
		As connections are made, flag are checked and updated
		for conflicts.  Final checking reports dangling channels.  
		Also includes (disabled) patch for propagating connection
		summary information from formals to actuals, including
		channel direction and relaxed actuals.  Enabling this patch
		will obsolete the unroll phase.  
	  Minor fixes: unresolved data-type of pint is int<0> (magic)


2006-11-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-56:
	  Explicitly instantiated a few more templates to make it build
		with powerpc-apple-darwin8 g++-4.0.1 -O3 optimizations.  
		AST/PRS.cc, AST/SPEC.cc, and added packed_array.tcc
		to Object/unroll/expression_assignment.tcc.
	  Test suite actually speeds up by around 10% over -O2.  


2006-11-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-54-channel-01-09:
	  Implemented hierchical connection information forwarding
		with switch: PROPAGATE_CHANNEL_CONNECTIONS_HIERARCHICALLY.
		This passes connectivity information and relaxed actuals
		from callee to caller, formal to actual.
		However, this patch has been left disabled for the moment.
		Consequence: to forward information accurately, dependent
			types of collection must be complete and created, 
			not just unrolled.  This means unroll and create
			will no longer be useful as separable passes, if
			unroll requires creating of dependent types.  
		Testing shows that only expected unroll differences were
			found and that create tests behaved the same.  
		Will not enable this patch until after branch merge, 
			or we arrive at a decision.  


2006-11-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-55:
	  In just a few lines enabled scope-alias reconstruction
		as a replacement for persistent management, which 
		saves a tons of memory (factor of 2) for binary objects.  
		Modifications local to "Object/def/footprint.cc".
	  Did not commit this switch, because test cases not updated.  
		Will do so after outstanding branches converge.  


2006-11-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-54-channel-01-08:
	  pint_expr::get_unresolved_data_type_ref(): now returns the
		magic int<0> type to allow flexible integer widths.  
	  Object/expr/data_expr.cc: connectibly type-equivalence
		replaced with binop-type-equivalence in nonmeta expressions.
	  Two test cases updated accordingly.  
	  Added bunch of test cases to check CHP and channel connectivity.


2006-11-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-54-channel-01-07:
	  process_definition::create_complete_type():
		added call to footprint::connection_diagnostics(), 
		which calls port_alias_tracker::check_connections(), 
		which checks channels connectivity, and issues diagnostics, 
		such as unconnected channels.  
	  Added bunch of test cases to test new channel connectivity checks. 
		So far working satisfactorily.  


	* HACKT-00-01-04-main-00-80-54-channel-01-06:
	  Added code to check CHP while unrolling for channel connectivity, 
		compile-time gets the direction correct, but this will
		account for dangling channels, for example.  
	  Some more documentation, with semantics questions.  
	  New directional connection flags: CHP-produced/consumer, 
		and non-meta indexed.  
	  TODO: test cases for new features.
	  TODO: propagate local connection state from formals to actuals.  


2006-11-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-54-channel-01-05:
	  Minor bug fix in direction flag synchronization (missed
		reference declaration!).  
	  Added more test cases for channel direction checking
		to parser/channel.  
	  Plan: test create-phase and add a CHP pass for channel use checking.  


2006-11-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-54-channel-01-04:
	  Forced printing of top-level prs/chp/spec in module, mimicking
		process_definition, for better diagnostics in test suite.  
		Few test cases updated as a result.


	* HACKT-00-01-04-main-00-80-54-channel-01-03:
	  Implemented a connection direction checking policy in
		Object/inst/connection_policy.tcc.
		Correctly rejects mis-connections of channels.  
	  Tested (successfully) new test cases for directional connections.  


	* HACKT-00-01-04-main-00-80-54-channel-01-02:
	  No source revision.  
	  Updated regression test cases, to reflect new footprint size.  


	* HACKT-00-01-04-main-00-80-54-channel-01-01:
	  New branch for updates to channel semantics: type-checking
		and connection checking.
	  AST/instance.cc: reject non-port directional channel declarations.  
	  Added Object/inst/connection_policy.{h,tcc,cc}:
		implements direction-connection semantics for channels
		with additional direction flags per alias,  
		not yet complete.  (Introduces 43 temporary regressions, 
		cause by change in footprint size for channels.)
	  Written and added bunch of test-cases to parser/channel: 
		goal is to pass all of them before branch is over.  


2006-11-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-54:
	  Little source revision: comments only, in preparation for
		upcoming channel- and chp- related changes.  
	  dox/lang documentation updated (same issues noted as NOTES)
	  Test suite updated with template fixes and new test cases.  


2006-11-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-53:
	  Implemented an import preprocessor called 'flatten', which simply
		expands imports recursively, with implicit pragma-once
		behavior (visit files once only).  Does not do *any*
		grammar checking other than what is needed to process
		import directives.  If you want to use cpp directives, 
		then pass the result to cpp, driver does not support
		direct use of cpp yet.  
	  The flattener is useful for generating single-filed test cases, 
		and producing output suitable for cpp.  
	  TODO: driver: pass preprocessor options, possible integration
		with 'compile'.
	  TODO: enable dependency generation in flatten
	  NOTES: summarized chp-bool discussion.
	  Seeded sim/chpsim directory.


2006-11-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-52-merged-test-12:
	  Merged test-parallelization branch, no source revision.  


2006-11-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-50-test-12:
	  No source revision.  (test/ChangeLog)


	* HACKT-00-01-04-main-00-80-50-test-11:
	  No source revision.  (ChangeLog, test/ChangeLog)


	* HACKT-00-01-04-main-00-80-50-test-10:
	  No source revision.  (test/ChangeLog)


	* HACKT-00-01-04-main-00-80-50-test-09:
	  No source revision, round of Makefile touch-ups (test/ChangeLog).


2006-11-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-50-test-08:
	  No source revision.
	  Done parallelizing tests, only clean-up remains.  


	* HACKT-00-01-04-main-00-80-50-test-07:
	  No source revision.
	  More test suite parallelization.  


	* HACKT-00-01-04-main-00-80-50-test-06:
	  No source revision.
	  Parallelized prsimexpr and prsim-checkpoint tests.  


2006-11-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-51:
	  Checked against g++-4.2-20061107, with -O3.
		Included multikey_map.tcc in footprint_value_base.cc
		for an optimized-away destructor symbol.


2006-11-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-50-test-05:
	  No source revision.
	  Parallelized prsim tests.


	* HACKT-00-01-04-main-00-80-50-test-04:
	  No source revision.
	  Parallelized alloc tests.  


	* HACKT-00-01-04-main-00-80-50-test-03:
	  No source revision.
	  Parallelized create tests.  


2006-11-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-50-test-02:
	  No source revision.
	  Parallelized unroll tests.  


	* HACKT-00-01-04-main-00-80-50-test-01:
	  Branch for parallelizing regression test suite.  
	  No source revision.  
	  Compile-tests parallelized so far, and distchecked.  


2006-11-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-50:
	  No source revision.  Top-level configure patches Makefile to
		make it safer to "test && mkdir" during parallel installs.  


2006-11-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-49-merged-instance-02-31:
	  Branch merge.
	  Summary: major memory reduction in run-time and object binary size.  
		Added collection_interface as root abstract class per meta
		type of collection.  From this spawn the former 
		instance_collection and port_actuals_collection.
		port_actuals_collection is lightweight collection that uses 
		a reference to a formal collection for size/type information.  
	  Footprints are now heap-allocated making life much simpler/easier.  
	  Footprints are now responsible for allocating all collections
		in pools (called collection-pool-bundles).  
		Consequently, footprints are used to translate between
		pointers and indices.  
	  test/quarantine/mem-01.hac shows object size reduction of
		5x to 10x depending on the phase.  


2006-11-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-31:
	  Perm'd !POOL_ALLOCATE_{INSTANCE,VALUE}_COLLECTIONS, because 
		they are no longer relevant, pool-management is done
		by collection pool bundles.  (-200 LoC)
	  Branch status: complete, ready to merge up.


	* HACKT-00-01-04-main-00-80-45-instance-02-30:
	  Perm'd POOL_ALLOCATE_ALL_COLLECTIONS_PER_FOOTPRINT (-2000 LoC).
		Summary: All instance/value collections (formal or actual, 
		sparse or dense) are now managed by the footprint_base
		class which is a wrapper around collection pool bundles. 
		By managing these collections with pool bundles, this saves
		from having to allocate them onto the heap, which is where
		the massive savings in object serialization comes from.  
	  No longer specializing persistent type-keys for these
		collection template classes.  
	  Also: footprint's collection map is now a sorted tree, instead
		of the old hash_map.  


	* HACKT-00-01-04-main-00-80-45-instance-02-29:
	  Perm'd HEAP_ALLOCATE_FOOTPRINTS (-650 LoC).
	  Good news: much of the deleted code was dirty and unmaintainable
		code to work around the difficulty of re-establishing
		footprint pointers without persistence management.  
		Most affected: global_entry.tcc and alias_{actuals,empty}.tcc.


	* HACKT-00-01-04-main-00-80-45-instance-02-28:
	  Perm'd ALLOCATE_PORT_ACTUAL_COLLECTIONS.


	* HACKT-00-01-04-main-00-80-45-instance-02-27:
	  Perm'd ENABLE_PORT_ACTUAL_COLLECTIONS, the collections used
		by subinstances and public port collections, with 
		back-references to formal member collections in 
		other footprints.  This significantly reduced the amount of
		structural replication in the instance hierarchy.  


	* HACKT-00-01-04-main-00-80-45-instance-02-26:
	  Perm'd USE_COLLECTION_INTERFACES.
	  Summary: from these base classes are derived formal and local
		collections with positional alias information, and
		actual collections which are lighter weight representations
		back-referencing formal collections.  


	* HACKT-00-01-04-main-00-80-45-instance-02-25:
	  No source revision.
	  Finished re-verifying all remaining create/alloc/cflat tests.
	  Branch is stable, and nearly complete.
	  TODO: Clean-up and touch-ups (and comment-up)


	* HACKT-00-01-04-main-00-80-45-instance-02-24:
	  No source revision, updated all unroll test expects, 
		and only trivial (header-only diff) create test expects.
	  The remaining 213 will be scrutinzed more carefully, and tediously...


2006-11-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-23:
	  Fixed footprint::evaluate_scope_aliases, a badly botched 
		transformation to use instance_collection_pool_bundles.  
		Test suite results in fewer naming differences.
	  Next: large batches of regression test updates.  


	* HACKT-00-01-04-main-00-80-45-instance-02-22:
	  Last commit too hasty!
	  Fixed failure to collect instance_collections' relaxed 
		actual parameters in the alias sets.  
	  Now, no tests ICE.  
	  Also noted near ORDER OF MAGNITUDE reduction in memory, 
		and massive (5x) speedup. 


	* HACKT-00-01-04-main-00-80-45-instance-02-21:
	  Post-alloc reconstruction death fixed, by simply maintaining
		the footprint pointers with trivial serialization.  
		Bunch of obsolete code slated for removal.  
	  Test suite: no ICEs, many header-only differences, many
		differences due to ordering and differently chosen
		canonical names in equivalent sets.
	  TODO: re-validate all affected tests by hand.  *sigh*
		Will try to reduce/minimize differences first.  


	* HACKT-00-01-04-main-00-80-45-instance-02-20:
	  Split collection loading into two phases: allocate, then load, 
		for the purpose of being able to load footprint-translated
		pointers in the subinstance manager before pointees are loaded.
		This fixes unroll/create/objdump-ing.
	  Next regression to fix: deaths in post-alloc objdump.  


	* HACKT-00-01-04-main-00-80-45-instance-02-19:
	  More modifications based on heap-allocated footprints.
		All instance_collections (and sub-types) are initialized
		with a back-reference member to the in-charge footprint.  
	  Fixed incorrect code in port_actual_collections by distinguishing
		between writes withing the footprint (local) vs.
		references to external footprints.  
		instance_collection now distinguishes write_local_pointer
		from write_external_pointer, which just loads an additional
		pointer to a heap-allocated footprint.  
	  Q: do value collections need footprint?  Probably not, unless
		we have cross-footprint references (post-unroll).  
	  TODO: global_entries' footprint reference can now be serialized
		and de-serialized using the persistent_object_manager.
	  Next to fix: subinstance_manager's loading of pointers to
		physical_instance_collections sometimes fails because
		dependent pointees have not been pool-allocated yet during
		reconstruction, so we may need a two phase reconstruction.  


2006-11-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-18:
	  Converted footprint_manager to use heap-allocated footprints.
	  Basic tests pass with expected header differences.  
	  Next: give instance_collections back references to owning footprint, 
		and correctly track formal_collection references.  
	  Maybe push super_instance pointer down to port_actual_collections.


	* HACKT-00-01-04-main-00-80-45-instance-02-17:
	  Rewrite many create/alloc -related footprint member functions
		to iterate through collection pools, rather than
		using the collection_map to avoid repeated lookups.  
		Marked certain corresponding instance_collection
		member functions as never-call.  
	  Make.hchk-head: added .h, .hh, .tcc SUFFIXES.  
	  Next: heap-allocate footprint and serialize pointers hitherto.  


	* HACKT-00-01-04-main-00-80-45-instance-02-16:
	  Latest crash bug fixed, mishaps in collection_pool class template
		with goof-ups in iterators and allocation.  
		Mostly fixes in Object/inst/collection_pool.{h,tcc}
		More rigorous testing in util/test/collection_pool_test.cc.
	  Value collections now re-register themselves to footprint on load.
	  Basic tests now pass with expected header differences.  
	  Tests begin to fail (as expected) when footprints are 
		referenced by collections, so now we need them to
		be serialized and heap-allocated.  


2006-11-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-48:
	  One awk-script revision: in parse/common-output-to-C.awk:
		Dropped one string substitution because the version
		of awk on i686-apple-darwin8 is buggy (on "\\").  :(
		This caused compile expect differences in test suite, 
		which were harmless, but annoying nonetheless.  


2006-11-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-15:
	  Minor change: broke up footprint.cc into new base components:
		footprint_{struct,basic,value}_base.{h,cc}, 
		using footprint_base.{h,tcc}, factored headers.  
		Much better compile parallelism.  
	  NOTED that current implementation is flawed:
		port_actual_collections reference formal_collections
		belonging to OTHER footprints, which means we now 
		require acyclic ordered construction of footprints, 
		which is now moved up the TODO queue.  
	  Still debugging previous problem before moving on...


2006-11-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-14:
	  Defined the remaining undefined references for
		POOL_ALLOCATE_ALL_COLLECTIONS_PER_FOOTPRINT, now enabled.
	  Added: Object/inst/collection_traits.h -- compile-time associative
			templates and enumerations for distinguishing
			different collection subtypes for different pools.  
		Object/inst/collection_index_entry.h -- structure that encodes
			an instance-collection pointer for serialization.
	  Now pass footprint down deeper for use when allocating and
		registering a new collection, now done atomically.
		Footprint also used to load instance collection pointers, 
		and is registered at the same time as de-serialization.
	  Next: debugging -- this revision compiles, links, but dies.  :-/
	  TODO: consider breaking up footprint.cc into smaller 
		translation units, for compiling... it's ginormous.  


2006-11-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-47:
	  For the first time, validated using -O3 (more aggressively
		optimized), even using a beta compiler: g++-4.2.
	  Issues encountered: as a result of optimizations, compiler
		often drops template symbols b/c it thinks it is locally 
		unused, but is in fact depended upon from another 
		translation unit.  This patch mostly ensures that many of the
		needed symbols are preserved, and also publicizes more
		template methods in .tcc files.  
	  Makefile.am: factored out new small core convenience library, 
		libhacktcommon.la, also the home of exported template
		definitions shared all over the place.  Also added new
		.tcc files to source lists.  


2006-11-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-13:
	  Continued work on POOL_ALLOCATE_ALL_COLLECTIONS_PER_FOOTPRINT, 
		still disabled; the following modifications are thus guarded:
	  footprint's instance_collection_map will be map-sorted, 
		and entries will be index-stubs to be translated by
		the various collection pools.  
	  instance_collection serialization completely re-done to use
		footprints and collection pool bundles to encode and
		restore pointers.  
	  Serialization functors re-written to bind different argument
		types for the pool-managed implementations.  
	  subinstance_manager now uses never-ptr, and serializes 
		instance_collection references using the footprint.  
	  Tons of ref-count pointers demoted to never-ptr (shallow) pointers
		everywhere in instance and reference methods.  
	  Removed traces of unroll_context_value_resolver.  
	  Summary: compiles, but some undefined references remain.  


	* HACKT-00-01-04-main-00-80-45-instance-02-12:
	  Lots more hacking at POOL_ALLOCATE_ALL_COLLECTIONS_PER_FOOTPRINT, 
		but still left disabled for now.
	  instance/value collection prototypes updated to reflect how
		collections and aliases will be serialized with new
		pool-managed collection scheme: pool_bundle will take the
		place of persistent_object_manager in many instances, since 
		all pointers of interest will belong to the same footprint.  
		Need to update pool functor calls accordingly.  
	  instance_collection_base will no longer be : persistent!  whoa.
	  instance_alias_info::load_next_connection(), now simply forwards
		call to ::load_alias_reference, no more separate casing.  
	  Object/traits/type_tag_enum.h: renamed some enumerations to 
		be unambiguous, and also defined reverse-mapping policy
		to translate from enumeration to tag type.  
		Also added META_TYPE_ enums to all traits classes.  
	  Phased out unroll_context_value_resolver, good-bye hack, 
		replaced with simple consistent call in
		simple_meta_value_reference::unroll_resolve...
	  TODO: write footprint translator from index entry to pointer, 
		convert subinstance_manager's members to never_ptrs, 
		permanently remove unroll_context_value_resolver.  


2006-10-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-11:
	  instance collections and aliases:
		aliases no longer write the back-reference container 
		pointer during serialization; it is now reconstructed by
		the loading container.  Rationale: soon the containers
		will no longer be heap-allocated, and thus will not be
		translatable by the persistent object manager, and this saves
		space in the binary (noticeable savings, actually).  
		unroll and create test-expects updated accordingly.  
	  The following revisions have been added, but left *disabled*:
	  footprint: added value_footprint_base for value collection pools
		to the footprint base classes.  
		Begun to re-write instance_collection_map-related methods.  
	  added allocation interfaces to instance_collection_pool_bundle
	  Many general provisions for switching over to footprint-allocation
		of instance_alias collections: placeholders, unroll_context.  


	* HACKT-00-01-04-main-00-80-45-instance-02-10:
	  "Allow me to introduce you my children of the night..."
	  Added value_collection_pool_bundle class templates.  
		TODO later: dense value arrays (not critical)
	  Next: massive footprint interface surgery to facilitate
		pool allocation, including collection pointer class changes.  


2006-10-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-09:
	  Perm'd PRIVATE_IMPL_FOOTPRINT_BASE.


	* HACKT-00-01-04-main-00-80-45-instance-02-08:
	  Resorted to private implementation of footprint_base struct template, 
		breaking many unnecessary dependencies on definitions.  
	  Next: perm this switch, clean, for sake of maintainability.  


	* HACKT-00-01-04-main-00-80-45-instance-02-07:
	  Added: Object/inst/{collection_pool,
		instance_collection_pool_bundle}.{h,tcc}, preparing to 
		pool-allocate all collections per footprint.
		Need to do the same for value collections.  
		Also added data structure test to util/test.  
	  Bunch of (disabled) conditional code in preparation
		for per-footprint pool allocations.  
	  instance-collections: connections can now be separated from
		the serialization of the rest of the collection.  
	  footprint: instance_pool-related members renamed to avoid
		ambiguity with upcoming collection pools.  
	  Makefile.am: propagate header-check time stamps for
		exceptional headers.  
	  Next: privatize implementation of footprint_base's members
		to break structural dependency chain (affects includes).  


2006-10-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-06:
	  No source revision: all regression tests reconfirmed!
		unroll and create tests' headers were updated accordingly.  
	  test/quarantine/mem-01.hac: test case shows significant 
		improvement in speed and reduction in memory, by virtue
		of reducing number of heap allocated objects (persistent).  
		Comments inside test case.  


	* HACKT-00-01-04-main-00-80-45-instance-02-05:
	  Enabled ALLOCATE_PORT_ACTUAL_COLLECTIONS for testing, includes 
		bunch of small fixes, many relative to the last branch.  
	  Added stronger assertion checks in instance_alias and collection
		class methods.  
	  instance_collection::key_dumper::operator():
		key printing, auto-indent, and auto-endl, are now
		conditional upon the dimension being non-zero (array), 
		for convenient re-use between different collection types.
	  Fixes: instance_scalar::lookup_index(), can now be called, 
		and always returns 1 (1-based indexing).  
	  port_actual_collection::load_reference() is now conditional
		on the dimension of its referenced formal_collection.  
	  port_actual_collection::lookup_index(): off-by-1 fixed.  
	  Dynanmic cast checks updated to use collection_interfaces
		rather than isntance_collection_generic_types (formals).
		Affects: instance_placeholder, instance_reference (simple, 
		member, aggregate) classes.  
	  Improved diagnostic in port_actual_collection::unroll_aliases().
	  data_type_reference::unroll_port_instances():
		now takes resolved template parameters, and uses
		looked-up footprint for recursive unrolling.  
	  Test suite: most/all unroll/create tests have header-only 
		differences, but none were updated this revision. 
		Next revision will start sifting through and updating.  


2006-10-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-04:
	  Wrote most of code for flag ALLOCATE_PORT_ACTUAL_COLLECTIONS, 
		but left flag disabled for this revision.  
		Updated many member typedefs in class templates.  
	  Simplified instance_alias_info::{write,load}_object_base to 
		NOT deal with connections, but leave for a separate phase.
		So now the scalar collection explicitly invokes the 
		relevant alias write/load functors.  
	  Changed back-reference pointer from actual_collection to 
		formal_collection to reference-counted, 
		tentatively, conservatively.  
	  Renamed instance_collection::make_port_array()
		to make_port_formal_array, to avoid confusion with 
		upcoming allocation methods.
	  unroll_context: added lookup_port_collection method as a 
		special case of lookup_instance_collection.  
	  Bunch of debugging diagnostic code added to instance_alias_info.
	  Maybe goes without saying, but re-confirmed all regression tests.  


2006-10-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-03:
	  Enabled collection_interface classes.
	  Enabled/added port_actual_collection classes with back references to
		corresponding instance_collections (which should really
		be just port_formal_arrays).  They're not used anywhere yet.  
	  Added private iterator interface to formal_array classes.
	  Cleaned up traits_class headers' instance_alias_info typedefs.  
	  Next: use port_actual classes but heap-allocated initially.  


2006-10-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-46:
	  Checked against gcc-4.2-20061024, with a few visibility
		attribute corrections.  


2006-10-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-02:
	  Re-indexed dense collection (port_formal_array) to be interfaced
		using 1-based indices for consistency with the sparse 
		collection counterparts, re-enabled non-zero assertion check.  
		Adjustments are made internally in port_formal_array.  
	  Proposed some code for abstracting away 'collection_interfaces'
		to cover both formal and actual collections.  
		Not yet enabled.  


2006-10-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45-instance-02-01:
	  The final branch for reworking the instance-hierarchy for 
		large-scale memory reduction.  
	  This revision: replaced references to instance_alias_base*
		with instance_alias_info (to avoid confusion).  


2006-10-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-45:
	  No source revision.  Test suite now enabled use of automatic
		dependency generation.  


	* HACKT-00-01-04-main-00-80-44:
	  New configure option to enable/disable serialization object
		padding/alignment checking.  Doesn't save much memory, 
		due to per-heap-object header overhead.  


2006-10-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-43-merged-instance-01-14:
	  Branch merge.  Summary:
		Sparse instance collections no longer keep keys with
			values; they are now separated (much simpler).
		Union-find functionality written directly into
			instance_alias_info, no more inheritance.  
		Introduced dense collections for fast and efficient storage
			of packed multidimensional alias collections.  
		All resulting in simpler, cleaner, even faster code.
	  Next branch: reworking subinstance hierarchy for serialization
		and memory efficiency.  


2006-10-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40-instance-01-14:
	  Perm'd DENSE_FORMAL_COLLECTIONS (-100 LoC).
	  End of branch.  Merge to trunk.  


	* HACKT-00-01-04-main-00-80-40-instance-01-13:
	  Perm'd COLLECTION_SEPARATE_KEY_FROM_VALUE.  (-1000 LoC)
		Entire instance_alias class template is GONE, 
		also removed Object/inst/instance_alias.h.
	  Removed references to devel_switches where not needed.  


2006-10-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-42:
	  No source revision, just global makefile, distribution, 
		and packaging maintainence.  


2006-10-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40-instance-01-12:
	  Perm'd VALUE_COLLECTION_MAP, and also split up value_collection.h
		into _array and _scalar, analogous to instances.  


	* HACKT-00-01-04-main-00-80-40-instance-01-11:
	  Clean-up phase before merging to trunk, one flag at a time.  
	  Perm'd EMBED_UNION_FIND -- no reason ever to go back.  (-300 LoC)
	  Preparator developer comments in "Object/devel_switches.h"
	  Going to punt subinstance_manager rework until next branch, 
		which concludes development on this branch.  


	* HACKT-00-01-04-main-00-80-40-instance-01-10:
	  instance_placeholder::make_collection(): now creates a dense
		collection if it is known to belong to a port formal.
	  Test suite updated accordingly, only header diffs found in
		unroll and create tests.  
	  Next: rework subinstance_manager to use more efficient
		elements and members, perhaps moving away from 
		heap-allocations.  (should experiment some)


	* HACKT-00-01-04-main-00-80-40-instance-01-09:
	  Minor source revision, only in util/packed_array.tcc (fix).
	  No other source touched.
	  All unroll/create regression tests have been re-confirmed, 
		only differences occurred in persistent object headers.  
	  Next: footprint-local ports should be dense.  


	* HACKT-00-01-04-main-00-80-40-instance-01-08:
	  Completed and enabled DENSE_FORMAL_COLLECTIONS for instantiating
		ports in the public subinstance hierarchy with 
		densely packed multidimensional arrays, instead of sparse.
		Includes many minor fixes in port_formal_array.tcc.
	  Object/common/extern_templates.cc: added some more common
		multikey_generic-related symbols.  
	  Added instance_collection lookup_key method.  
	  Added instance_collection::make_port_array to spawn 
		dense collections, but scalars still remain scalars.  
	  Cleanup in Object/inst/instance_placeholder.h.
	  util/packed_array.tcc: fixed index-to-key translation.  
	  Test suite has NOT been updated yet -- next revision.  
		So far, only unroll/create header differences found.
		No fatal deaths.  No differences beyond the create phase!
	  How much memory does this save?  Stay tuned.
	  TODO: footprint-local instantiations can also take advantage
		of densely packed arrays.  


2006-10-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40-instance-01-07:
	  Added (but not yet used) Object/inst/port_formal_array.{h,tcc}
		which serves the purpose of containing dense collections of 
		aliases, using packed_array_generic representation internally.  
	  Factored out functor classes of instance_array to the parent
		instance_collection, to re-used in port_formal_array.


	* HACKT-00-01-04-main-00-80-40-instance-01-06:
	  Minor source pecking:
		Split up instance_collection.h into instance_array.h and
		instance_scalar.h to reduce include material and clean up
		headers.  Turns out most other classes don't need to know
		about the actual arrays.  
	  Factored multikey key-dumper helper into own file. 
	  value_array now uses std::map instead of util::qmap internally.  
	  Checked against gcc-4.1 while we were at it.  


2006-10-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40-instance-01-05:
	  Major changes to instance-collection structure:
		Flag: COLLECTION_SEPARATE_KEY_FROM_VALUE (true)
		Uses new sparse_collection to manage alias collections.  
		No longer uses multikey_set and friends.  
	  sparse_collection: wrote iterator class to traverse elements
		in key-sorted order, whose dereference access is cached
		and takes O(lg lg N) to re-cache after invalidation.  
		Also added more find methods, including non-const accessors.  
	  No more dimension-specific instance_alias, derived from 
		instance_alias_info -- obsolete!  Functionality has been folded
		into the base class, also eliminating many virtual calls.  
	  Alias connections (next) are written more efficiently, using
		a single internal index instead of a multikey.
		Again, scalars aliases do not need indexing.  
		Serialized object binary is smaller as a result.  
	  instance_array::resolve_indices now makes better use of
		multikey_assoc's compact-related template routines.  
	  Updated regression test stderrs to reflect improved index dumping, 
		where 1D indices were printed 'k' are now '[k]'.
	  TODO: also apply same transformations to value_collections.
	  TODO: port collections -- key to eliminating map replication
		by using back-reference from port actuals to formals.
	  TODO: dense collections -- enhancement


2006-10-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40-instance-01-04:
	  util/ChangeLog: update to multikey_assoc member functions.  


	* HACKT-00-01-04-main-00-80-40-instance-01-03:
	  Replaced the union_find_derived business with a much simpler,
		cleaner embedded union-find functions into instance_alias_info.
		Uses switch EMBED_UNION_FIND.
	  Next phase: decoupling multikey key from instance_alias value
		using new sparse collection structure.  


2006-10-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40-instance-01-02:
	  New sparse collection data structure, with basic tests.  


	* HACKT-00-01-04-main-00-80-40-instance-01-01:
	  util/ChangeLog: list_vector now uses std::map.


2006-10-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-41:
	  No source revision.  Just test/Make.test-tail.


2006-10-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-40:
	  Removed and perm'd LOOKUP_GLOBAL_META_PARAMETERS, which is 
		now cleanly handled by the new lookup implementation 
		in unroll_context.  Globals are looked up in the
		top-level footprint, which is found at the bottom of
		the context stack, or conveniently forwarded to the top.  


	* HACKT-00-01-04-main-00-80-39:
	  Perm'd SRC_DEST_UNROLL_CONTEXT_FOOTPRINTS (-180 LoC).


	* HACKT-00-01-04-main-00-80-38:
	  Perm'd RVALUE_LVALUE_LOOKUPS (-60 LoC).


	* HACKT-00-01-04-main-00-80-37:
	  Perm'd RESOLVE_VALUES_WITH_FOOTPRINT (-560 LoC).


	* HACKT-00-01-04-main-00-80-36:
	  This is it, what we've all been waiting for:
	  "Forty-four thousand lines of rotten spaghetti code! 
		GONE! MWAHAHAHAHAHHAAHAHAA!!!!" -- gcc-bugzilla quip
	  Perm'd USE_INSTANCE_PLACEHOLDERS (-5000 LoC).
		Along with it go comments and documentation for the deleted 
		code.  :S  Cleaner code /should/ require fewer comments.


	* HACKT-00-01-04-main-00-80-35:
	  Perm'd USE_RESOLVED_DATA_TYPES and USE_UNRESOLVED_DATA_TYPES, 
		-560 LoC.


	* HACKT-00-01-04-main-00-80-34:
	  Perm'd MODULE_PROCESS (-530 LoC)
		Kiss a significant chunk of dirtily hacked code Goodbye.  


	* HACKT-00-01-04-main-00-80-33:
	  Perm'd ALWAYS_USE_DYNAMIC_PARAM_EXPR_LIST.  (-500 LoC)


	* HACKT-00-01-04-main-00-80-32:
	  Perm'd the disabling of ENABLE_STATIC_ANALYSIS.  (-700 LoC)


	* HACKT-00-01-04-main-00-80-31:
	  First of a series of clean-ups:
	  Perm'd the following switches in "Object/devel_switches.h":
		REF_COUNT_ARRAY_INDICES, REF_COUNT_INSTANCE_MANAGEMENT, 
		SUBSTITUTE_DEFAULT_PARAMETERS (-800 LoC)


2006-10-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-30-merged-instance-00-39:
	  Major branch merge.
	  Summary: instance/value_collections separated into placeholder and 
		collection counterpart classes to avoid massive duplication.  
		Scoped spaces now may only include placeholders, 
			whereas footprints include collections.  
		Types: fundamental (unresolved) types are associated
			with placeholders while canonical (resolved)
			types are associated with collections.  
		Unroll: context now uses placeholders to lookup collections, 
			also now distinguishes between target and lookup
			footprints, for instantiation and references.  
		Lookup: template actuals are now included in footprint.
			Distinguish rvalue from lvalue parameter lookups.  
		Parameter defaulting: now performs compile-time expression
			substitution based on parameter positions.  
		Module: now subclass of process_definition, making efficient
			reuse of functionality.  During post-parse 
			type-checking, module is registered as top-most 
			open definition on stack, for convenience.  
		Top-level instance references functions now require
			top-level footprint argument.  
		May-analysis functions, and pre-unroll static analyses
			have been discarded, in favor of cleaner simpler code.
		parser: allow array-concatenations as template arguments.  
		Instance management statements: now reference counting.
		instance reference array-indices: now reference counting.  
		param-expr-lists: now use dynamic_param_expr_list instead of
			abstract param_expr_list in many places (simplified).  
		Test dump diagnostics: more consistent naming.  
	  Next: series of source clean-ups on main trunk, 
		then next phase of alias-collection memory reduction:
			refactoring sparse and dense collections.  
	  TODO: packaging (minor) -- make distcheck-able from VPATH build.


2006-10-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-29:
	  No source revision, lib/ and test/lib updates only.  


	* HACKT-00-01-04-main-00-80-28:
	  No source revision, lib/ updates only.  


2006-10-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-39:
	  Minor patches for gcc-4+ standard conformance, checked against 4.1.
	  Status: branch is ready to merge.  


	* HACKT-00-01-04-main-00-80-03-instance-00-38:
	  Added additional footprint& argument for all top-level lookup
		related functions in the instance_reference hierarchy, 
		to fix ISE on reference lookups using the new unroll_context
		with distinct target and lookup footprints.
		TODO: future cleanup: rewrite without const_cast kludge.  
	  Enabled and re-confirmed all prsim-related tests.
	  Good news: no regressions remain on branch!!!  distcheck passes too.
	  Decide: merge trunk to branch first?
	  Next phase (new branch): using densely packed arrays for ports
		and template formals.  


2006-10-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-37:
	  Enabled and re-confirmed all cflat-related tests.
		A scant few test cases had outputs re-ordered, updated them.
	  AST::parse_context::get_current_named_scope():
		Don't ICE -- last case is reachable when using a read-only
		context attached to module.
	  Next: prsim tests.


	* HACKT-00-01-04-main-00-80-03-instance-00-36:
	  Enabled and re-confirmed ALL alloc regression tests.
	  Again, some top-level canonical names changed due to
		traversal ordering, which should not be depended upon.  
	  global_entry::dump_canonical_name() updated to use 
		dump_flags::no_definition_owner.  
	  Next: cflat tests.


	* HACKT-00-01-04-main-00-80-03-instance-00-35:
	  Re-enabled all create tests in regression suite.  
	  Updated all/most create tests (stderr): no regressions!!!
		A few top-level canonical names were chosen differently.  
	  Module's prs dump is obsolete, now just uses footprint's dump.  
	  Next: alloc regression tests.  


2006-10-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-34:
	  instance_placeholder_base::get_footprint_key():
		now does the same thing as get_qualified_name(), 
		except for loop induction variables.  
	  name_space::dump_qualified_name() updated to omit the leading "::"
		for global namespace references.  
		Test-expects updated accordingly.  
	  Fixed ICE on process_definition::__create_complete_type():
		no need to re-unroll template parameters, because
		they are already in the footprint.  
	  Updated module's dump to use footprint::dump().  


2006-10-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-33:
	  Another round of dump output updating, finally gotten rid
		of leading "::" in qualified names consistently, 
		in dump_qualified_name() and dump_hierarchical_name().
	  Tons of test outputs updated accordingly.  
	  No unroll regressions left.  
	  Next: onto create phase regression testing.  


	* HACKT-00-01-04-main-00-80-03-instance-00-32:
	  Updated dumping of qualified names to definition names.  
		Could make definition_base::get_qualified_name() non-virtual.
	  Bunch of tests updated because of key-name reordering, 
		and mostly trivial string substitution.  
	  This takes care of the last of the remaining unroll regressions!


2006-10-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-31:
	  Fixed remaining ICE regressions in template:
		incomplete relaxed type was unrolling into the wrong footprint,
		so we've forced such unrolls to go into a temporary
		auxiliary footprint, until type is (strictly) complete.  
	  One more trivial regression remains (qualified typename),
		before proceeding to create phase.


2006-10-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-30:
	  Fixed some of remaining regressions (3 down):
		Do not try to lookup footprint with incomplete (not strict)
		type because wrong arity, instead create an auxiliary footprint
		(of parameters) for the purposes of unrolling ports.  
	  Remaining regressions (template):
		Footprint isn't being correctly unrolled when unrolling an
		instance with a relaxed template argument.


	* HACKT-00-01-04-main-00-80-03-instance-00-29-merged-exprlist-08:
	  Child branch merge.
	  Summary:
		Now always use dynamic_param_expr_list instead of 
			abstract param_expr_list with template arguments.  
		Perform proper default positional template parameter
			substitution at compile time, which fixes
			half of the remaining unroll regressions.  
		Various diagnostic message improvements.  
		references' array_indices are now reference-counted for ease.
		Parser fix: array-concatenations are permitted in 
			template argument lists.  
	  Next: fix template arity mismatch ICEs.  


2006-10-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-08:
	  Cleaned up abandoned revisions. 
	  End of this branch, merge up.  


	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-07:
	  Completed default positional parameter substitution.  (YES!)
		Added some new test cases for some obtuse uses of this.  
		Corresponding test cases updated.  
	  Fixed diagnostic messages about uninstantiated references.  
		This knocks off all regressions related to this, leaving:
		parser/namespace: (1) should qualify typename with namespace
		parser/template:
			(10) ICE: footprint key arity mismatch
				in template/, connect/.
		Total: 11 remaining.
	  Some clean-ups might be in order before merging to parent branch.


	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-06:
	  First round of implementing default positional parameter 
		substitution in expression hierarchy, enabled.
	  Does not link, as some needed definitions are still missing.  


2006-10-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-05:
	  Now ref-counting array_indices (of meta_indexed_references).


	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-04:
	  Parser fixed to allow concatenation expressions in
		template argument lists.  
	  One test case updated: parser/template/048.  


	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-03:
	  Top-level module is now registered with the parse_context as the
		outer-most open definition (now implemented as stack).
	  Other minor clean-ups in parse_context.{h,tcc,cc}.
	  Next: pass parent template contexts for default substitution.  


	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-02:
	  Start of bunch of rewritten code (currently disabled) to rework
		positional template parameter substitution.
	  Head start on param_expr::substitute_positional_parameters()
		in method hierarchy.  
	  Plan: perform substitution by passing parent template context
		at the time the fundamental type reference is created.
	  Next: parse_context clean-ups to be able to use top-level
		module as a definition, to simplify passing of (null)
		template formals.  Will need an open definition stack.  
		

2006-10-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-28-exprlist-01:
	  Branch objectives:
		phase out use of param_expr_list as a base class 
		of dynamic_param_expr_list, which simplifies life greatly.
		Goal: perform positional parameter substitution on
		default template parameter expressions, at compile time.  
	  This revision: no new regressions, same ones.  
	  Next: default param substitution.  


2006-10-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-27:
	  sim/prsim/Cause.h: initialize the unused padding character
		because it is written out to binary checkpoint, and
		is required to match for deterministic diffing.
	  sim/prsim: other files added some debugging hooks (disabled)


	* HACKT-00-01-04-main-00-80-26:
	  No source revision.  Packaging matters.  
	  util/test/Makefile.am, test-expect.sh.in:
		Don't run sed script as executable, use sed -f instead.
	  dox/lang/ some notes about PRS macros.  


2006-10-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-28:
	  No source revision, just massive regression test updating.
		Updated most tests in suite, leaving a few known regressions
		to be tackled one at a time.  
	  Summary of remaining (unroll) regressions:
		parser/namespace: (1) should qualify typename with namespace
		parser/process: (2) default parameter expressions need to be
			positionally *substituted* before resolving.
		parser/template: (4) same as process/, 
			(2) different diagnostic message,
			(10) ICE: footprint key arity mismatch
				in template, connect.
		Total cases remaining: 19
	  This has to be the most boring task for this project...


	* HACKT-00-01-04-main-00-80-03-instance-00-27:
	  canonical_type::unroll_port_instances():
		opened up read-only reference to footprint to provide
		context for template-dependent port instantiations.  
		Nice that footprint contains the necessary values!
	  Updated another batch of parser/process test cases, 
		two unroll regressions remain therein.  
	  TODO: unroll ports up-front, remove from body sequential scope.  


2006-10-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-25:
	  Requested by Virantha: 
		sized pass-gate, so passn/passp now take
		optional width, length parameters: e.g. passn<5,2>(x,y,z)
		Only cflat lvs -fsizes produces sized output so far. 
	  lib/mk Makefiles added support to make .lvssprs (sized lvsprs).
	  New test cases added.  
	  minor: renamed PRS::attribute_list_type -> rule_attribute_list_type.


2006-10-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-26:
	  Fixed subinstance_manager::dump to print port keys first.  
		Updated bunch of parser/process test cases.
		Remain regressions: ICE-on-valid, rejects-valid
	  TODO: unroll ports up-front in processes, and remove from 
		body sequential scope.  


	* HACKT-00-01-04-main-00-80-03-instance-00-25:
	  dynamic_meta_index_list updated to take const meta_index_expr.  
	  unroll test updates:
		parser/array (all complete), parser/process (partial)


	* HACKT-00-01-04-main-00-80-03-instance-00-24-merged-context-04:
	  Merged context-related fixes from child-branch.
		Summary: unroll_context now has separate footprints
			for different purposes: top-level, target, lookup.  
			top-level is just another lookup.  
	  Next: continue updating all unroll regression tests.


2006-10-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-23-context-04:
	  Fixed last remaining unroll regressions in parser/param, 
		just had to make loop variable valid after instantiation.  
	  Instantiation statements now take const placeholders.  
	  Expurgated "replay_*" in instance_alias and hierarchy.
	  Ready to merge branch up.


	* HACKT-00-01-04-main-00-80-03-instance-00-23-context-03:
	  propagated top-level footprint down through entire
		unroll call subgraph to be able to lookup
		out-of-scope global parameters.  Tons of prototypes updated.
	  unroll_context::lookup_rvalue_collection():
		now tries to lookup top_footprint for globals.  
	  Regressions fixed: parser/param/06{6,7,8,9}, few more left in param/.
	  DO: Cleanup references to "replay_*" methods (delete the obsolete).


2006-10-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-23-context-02:
	  Now distinguishing lvalue from rvalue lookups, using the switch
		RVALUE_LVALUE_LOOKUPS in Object/devel_switches.h.
	  Next: chain context to make top-level context searchable.  


	* HACKT-00-01-04-main-00-80-03-instance-00-23-context-01:
	  unroll_context: separate footprints for looking up, 
		one for instantiating and modifying, the other for 
		just read-only lookups, which may search out-of-context.  
	  Some expected momentary regressions in parser/param.  
	  Marked unroll_context::get_target_footprint() obsolete.  
	  Next: distinguish lvalue from rvalue lookups.  
		Then chain the contexts (global) appropriately.  


2006-10-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-23:
	  Debugging fixes: be able to partially dump collection before
		its type has been completely resolved.  
	  Next: split footprint member of unroll_context to be able to
		chain the contexts without instantiation conflict.  


2006-10-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-22:
	  New switch SEQUENTIAL_SCOPE_INCLUDES_FORMALS -> 0:
		Defined to zero to separate formal instantiations out.
		Punted removing port formals instantiations for now.  
	  Cleaned out PLACEHOLDERS_OWN_INSTANTIATIONS use (abandoned).  
	  Batch of unroll-expect tests updated in parser/{namespace,param}.
		Still some regressions to fix.  


2006-10-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-21:
	  Switched over all instance-management pointers to reference-count.
	  Intent: remove template and port formal instantiation statements 
		from sequential-scopes, only using in placeholders.  
	  Targeting one remaining regression in parser/basic.
	  Next: don't add template/port formal statements to seq.-scope.


2006-10-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-20-merged-module-06:
	  Merged revisions from -module child branch.
	  Summary: module has been defined to use process_definition's 
		facilities for more consistent unrolling implementation.
		Haven't handled module 'create' phase yet.  
	  Next: revise instantiations of template and port formals
		to avoid double instantiations, i.e. ports are implicitly
		unrolled before body sequential instance management.  


2006-09-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-06:
	  Implemented get_footprint_key(), but still has leading "::"
		for qualified names (who cares? clean it later)
	  footprint::dump_with_collections is now sorted alphabetically.
	  Removed any uses of footprint::import_scopespace.
	  Updated most parser/basic test cases, 
		  one more regression left in parser/basic.


2006-09-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-05:
	  module: dump is done, and looks satisfactory.
	  footprint::dump now prints the key too.  
	  {instance,value}_collection::load_object():
		now loads the placeholder so that its key is available.
		However, their parent namespaces aren't guaranteed yet! (TODO)
	  Next: use get_footprint_key() instead get_name() for footprint
		collection maps, to allow top-level instances residing
		in namespaces to be given qualified ID string.  
	  Goal: get parser/basic cases to work satisfactorily.


2006-09-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-04-merged-definition-02:
	  Merge, minor.  
	  TODO: module should dump footprint when unrolled.


	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-03-definition-02:
	  Cleaned out traces of DEFINITION_FOOTPRINT.  
	  Added missing type-dump in instance_placeholder::dump_formal().
	  Made more use of footprint_manager::operator[ptr-to-expr-list].
	  Next: merge branch, and return to module dump, using footprint.


	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-03-definition-01:
	  Mini-experimental branch testing the implications of adding
		footprints to all non-alias definition types.  
	  Discovered one-line solution to footprint problem --
		make a temporary for validating template parameters!
		See template_formals_manager::must_validate_actuals().
	  Going to revert most abandoned revisions.  


2006-09-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-03:
	  module: now using process_definition::__unroll_complete_type()
	  completed value_placeholder::dump()
	  Some trouble with unroll-assigning formal parameters because
		not all definition types have footprints!
		This causes assert fail where expecting footprint, obviously.
	  Object/traits/class_traits_type.cc:
		mutually attached pint_instantiation_statement to 
		pint_value_placeholder for the int::width template formal.
	  Next: make definitions have footprints [manager], even the 
		simple built-in ones, for the sake of consistency, 
		will probably do on branch.


	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-02:
	  More #if MODULE_PROCESS implementation code.
	  It compiles, but don't expect it to run successfully yet!
	  Next: rewrite module methods to re-use process_definition code.


2006-09-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-24:
	  No source revision, just lib/ update of alternator.hac.


2006-09-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-23:
	  prsim: event dumps now also report the event that caused
		it to be enqueued, useful for instability tracing.  
		prsim test expects updated accordingly.  
	  lib: alternator.hac additions, see lib/ChangeLog.


2006-09-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-19-module-01:
	  This child branch intended to refactor the module class to 
		work like a process_definition (nullary_template)
		and reuse the same functionality.
	  This revision only changed the module.h header, and does not compile.


2006-09-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-22:
	  Better diagnostic message for: "can't take member of non-scalar."
	  lib: new alternator repeater definitions, see lib/ChangeLog.  


2006-09-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-21:
	  No source revision, library fixes only.  
	  Tighter testing on resets of circuits defined in lib/, 
		fixed some resets on various alternator circuits, 
		thanks to new reset tests, details in lib/ChangeLog.  


2006-09-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-20:
	  prsim: load_checkpoint catches exception thrown from bad 
		read_string, in case of invalid checkpoint file.
		Also udpated util/IO_utils.cc.
	  More notes in TODO.
	  lib: implemented merge and buffered-copies


	* HACKT-00-01-04-main-00-80-19:
	  prsim: added 'watch-queue' and 'nowatch-queue' view commands
		to see events as they are enqueued into event queue.  
	  don't crash on 'who' on bad argument.  
	  lib: implemented fast merge alternator and tree-fifos


2006-09-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-18:
	  No source revision.  lib update only, see lib/ChangeLog.  


2006-09-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-17:
	  No source revision.  lib update only, see lib/ChangeLog.  


2006-09-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-16:
	  No source revision.  lib update only, see lib/ChangeLog.  


	* HACKT-00-01-04-main-00-80-15:
	  No source revision.  lib update only, see lib/ChangeLog.  


2006-09-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-14:
	  Minor grammar update: allow trailing else clause of conditional
		instantiations bodies.  TODO: fix check.
	  lib: wrote more alternator cell definitions.


2006-09-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-13:
	  No source revision: added lib/split.hac with a few tests.  


2006-09-11	Sandra Jackson		<sjj3@cornell.edu>

	* HACKT-00-01-04-main-00-80-12:
	  No source revision: just lib/alternator.hac update, including
		a few test/lib test dump updates.


2006-09-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-19-merged-template-02:
	  Child branch merge: rework unroll_context, disabled some
		static analysis, tested template typedef parameter unrolling,
		disabled tests after compile-phase.


2006-09-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-18-template-02:
	  Tests: temporarily disabled all tests except for pre-unroll
		compile-phase tests.
	  Compile-time regressions ALL addressed/fixed, 
		very few tests updated as a result of new diagnostic messages.  
	  Rewrote parts of unroll instantiation for template parameters
		using the new target-footprint.  Part of 
		unroll_context_value_resolved phased out.  
	  Unrolling a collection for the first time adds it to the 
		footprint in instantiation_statement::unroll.  
	  TODO: later, distinguish modifiable from non-modifiable 
		out-of-scope footprints in the unroll-context.
	  Status: ok to merge to parent branch, then start trying 
		unroll testing one-by-one, rework top-level module.


2006-09-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-18-template-01:
	  Sub-branch for rewriting unroll_context to not embed 
		template actuals and formals, but rather lookup 
		all values and instances in the footprint.
		Consequently, template-parameter substitution (in typedefs)
		will need to create a temporary footprint for the purpose
		of value expansion.  
	  Disabled pre-unroll static analysis of initialization state
		with switch: ENABLE_STATIC_ANALYSIS (0).
		Now value_placeholder pointee of value_references may be const.
	  New switch: RESOLVE_VALUES_WITH_FOOTPRINT (1)
		unroll_context no longer distinguishes formals from 
		non-formals and loads all value_collections into the
		invoking footprint, done at the beginning of 
		complete-type unrolling/creation.  
	  Possible flag: certify_template_* methods as obsolete, 
		since formal-actual default value filling and type-checking
		can now be done in 
		param_expr_list::unroll_assign_formal_parameters.  
	  Refactored some code in expression_assignment class template.  
	  TODO: add parent_namespace ctor parameter back to unroll_context
		to support out-of-scope lookups again, but will need
		mechanism for qualified placeholder lookups in namespaces, 
		once we rework the top-level module.  


2006-09-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-18:
	  Fixed placeholder persistence and reconstruction.  
	  Next: update the use of unroll_context for template parameter
		substitution, since all values need to be looked-up in
		footprints now.  


2006-09-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-17:
	  In case you missed the fact: everything compiles/links (finally).  
	  All test/lexer and test/parser/basic *compile* tests pass.
		Minor obvious fixes applied to namespace, definition.  
	  All unroll tests expected to fail until top-level module class
		is reworked in the upcoming branch.  
	  Next: fix/address all compile-phase regressions (many).  


2006-09-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-11:
	  Fixed force-excl spec-directives to take arbitrarily grouped nodes
		as arguments (just like we did with check-excl), and 
		automatically expands groups and treats resulting set as 
		a flattened list of nodes.  
	  prsim: new command 'eval-order' [random|inorder] to toggle the
		evaluation ordering of fanouts: sequential or random.
		random is useful for emulating arbitration for events 
		caused by a signal fanout in the same forced-exclusive set.
		Whichever is evaluated first will lock out the others.  
		This does not depend on random timing.  
		Random sources can even be written using this.  
	  State: added flag to support random fanout evaluation ordering.  


2006-09-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-16:
	  Completed unroll_context::lookup_{value,instance}_collection, 
		the last undefined references... defined!
	  Fixed minor type in is_loop_variable.  
	  Tests: lexer/ is clean, parser/basic bombs as expected.
	  Upcoming: sub-branch to rework module since top-level instances
		are now relocated to footprint.  


	* HACKT-00-01-04-main-00-80-03-instance-00-15:
	  Only two undefined references left!!!
	  Implemented most of remaining definitions, many copy-modified
		from param_value_collection to param_value_placeholder, 
		including many boolean query functions.  
	  Got rid of PLACEHOLDER_SUPER_INSTANCES switch.   
	  Many other methods commented out from old instance and value
		collection headers and modules, now obsolete w/ placeholders.  


2006-09-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-14:
	  Marked more obsolete functions, and defined more missing references.
	  Considering doing-away with pre-unroll-time 'may-analyses'
		and forget about trying to catch errors earlier than necessary.
		Minimize the risk of reject-valid or accept-invalid.  


	* HACKT-00-01-04-main-00-80-03-instance-00-13:
	  Switched off more compile-time (pre-unroll) resolve functions.
	  More missing definitions filled in for placeholder classes.
	  Few more rounds before all undefined references resolved...


	* HACKT-00-01-04-main-00-80-03-instance-00-12:
	  Implemented more dump/get_name category methods for placeholders,
		and marked others obsolete or unused.  
	  Implemented instance/parameter formal queries.  
	  Re-implemented simple_meta_value_reference::unroll_resolve_rvalues
		*much* more cleanly than before.  


2006-09-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-10:
	  No source revision.  lib/ additions and revisions only.  
	  See lib/ChangeLog.


	* HACKT-00-01-04-main-00-80-09:
	  No source revision.  Just README maintainence.  


2006-09-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-11-merged-type-04:
	  Child-branch merge: new type reference methods with clear
		distinction between unresolved and resolved-canonicals.  


2006-09-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-10-type-04:
	  Finished implementing a draft of USE_RESOLVED_DATA_TYPES, 
		includes instance_collection::get_resolved_canonical_type(), 
		and related canonical type functions in the nonmeta
		instance and value reference classes and type managers. 
	  Added type/canonical_generic_datatype.h for convenience.
	  Unable to test until all undefined references are resolved, 
		so going to merge branch (and pray) and revert entire 
		branch later if all else fails.  


	* HACKT-00-01-04-main-00-80-03-instance-00-10-type-03:
	  Enabled USE_RESOLVED_DATA_TYPES (which really should be renamed
		USE_RESOLVED_NONMETA_TYPES) in devel_switches.
	  Bunch of missing definition (for next revision).  
	  data_expr::get_resolved_data_type_ref 
		now returns canonical_generic_type.
	  data_type_resolver<>::operator(...)
		now returns canonical_generic_datatype.
	  Old get_canonical_type renamed to __get_raw_type because they
		only work with internal collection parameters, not canonical.
	  instance_reference_datatype.cc: implemented resolving
		of canonical types based on resolved collection.  
	  *_traits.h: class-traits new member: resolved_type_ref_type.


	* HACKT-00-01-04-main-00-80-03-instance-00-10-type-02:
	  Mostly renamed get_type_ref to get_unresolved_type_ref
		for clarity (b/c it took me an hour to read what I wrote...).
	  However, the old instance_collection::get_type_ref_subtype 
		used to deduce a resolved type from the collection's
		type-manager, but will be replaced by get_resolved_type_ref
		in the next revision.  


2006-09-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-10-type-01:
	  This mini-branch for rework of get_data_type_ref().
		First we make a distinction between unresolved (fundamental)
		and resolved (canonical) types.  
	  Renamed functions for clear distinction.
	  This revision has enabled the old unresolved types and left the
		newly proposed resolved types switched off.  
		They will be needed in the future for checking when unrolling
		CHP footprints.  


2006-09-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-10:
	  Round 2 of defining missing functions: references, collections, 
		placeholders and flagging some methods obsolete.  
		Still doesn't link.
	  Upcoming: sub-branch for refactoring type system:
		matching "fundamental" types with placeholders, and 
		"resolved" types with collections.  


2006-09-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-08:
	  No source revision.  Only distribution maintainence in Makefiles.


2006-09-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-07:
	  No source revision.
	  Library additions and updates: primitive unbuffered copies, 
		1of1 synchronizations.  All untested.  
	  Few tests updated after inlining some production rules in defs.  
	  see lib/ChangeLog.


2006-09-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-09:
	  Round 1 of defining missing functions.  Mostly obvious stuff.


2006-09-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-08:
	  This actually compiles... but stops at many undefined references
		to newly promised class methods.  Time to fill in the ______.
	  meta-loop code rewritten to accommodate pint placeholders
		using instantiation (unroll) into temporary footprint.  
	  Future TODO: refactor context lookup, replacing formals
		and actuals method of resolving values with more consistent
		footprint-based lookup.  


	* HACKT-00-01-04-main-00-80-03-instance-00-07:
	  Nope.
	  Most of the mind-numbing re-coding is done, now the real work begins.
	  Next: rewriting scoped lookup functions for unroll instance
		and value resolution, most affected: meta-loops.  


2006-08-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-06:
	  Compiles not.
	  Invasion of the placeholders: definition, expressions, 
		instance and value arrays, collection type managers, 
		lookup methods, instance and value references...


2006-08-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-05:
	  Welcome to another installment of "Does this sh-- compile yet?"
	  More placeholders: port_formals_manager, template_formals_manager,
		instance_collection, value_placeholders, simple and member 
		instance_references, value_references, type_references.  


2006-08-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-04:
	  Nope, still doesn't compile.
	  More propagating use of instance/value placeholders.  
	  Most affected in this revision:
		unroll_context, value_references, instance_references, 
		instance_alias (substructured)


2006-08-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-06:
	  BUG FIXED: prsim, State::diagnose_violation forgot to
		wipe node's pending event upon unstable-dequeue (one-liner).
		Test case omitted b/c difficult to reduce (random timing).  
		This also corrects the expect-out of case prsim/inv-15.  
	  Globally rewrote all uses of overloaded && and ||, 
		after disabling overloads in util/boolean_types.h. 
	  Fixed ICE_INVARIANT and ISE_INVARIANT macros.  
		Use ISE_INVARIANT in all sim/prsim sources.
	  TODO: debug category commands in prsim.


	* HACKT-00-01-04-main-00-80-05:
	  parser .yy.in files: use AC_SUBST'd @YACC_PURE_PARSER@
		instead of old sed hack.  
	  module::__cflat: don't depend on && operand evaluation ordering, 
		overload lacks sequence point.  


2006-08-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-04:
	  Minor bug fix in prsim's 'who' command, check that an alias
		is actualy instantiated in the case of conditionals.  


2006-08-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-03:
	  Still does not compile.
	  Spread use of instance and value placeholders further.  
		Affected: AST, parse_context, scopespace, namespace, 
		definitions, lookup methods, footprint, unroll_context, 
		instance and value references and collections, traits, 
		instantiation statements, ...


2006-08-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-02:
	  Does not compile.
	  Enabled USE_INSTANCE_PLACEHOLDERS switch and continued to mark code 
		revisions to use instance-placeholders, in AST/expr, 
		scopespace, namespace, type-reference, instance-reference.
	  More of the same coming.  


2006-08-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03-instance-00-01:
	  Welcome to the instance-collection rewrite branch!
	  Plans: replace deep-copy strucutres of instance/value collections
		with placeholders and back-references.  
	  Benefits: reducing memory footprint (and object) by at least
		an order of magnitude.
	  Risks: highly invasive reworking of instance collection
		and classes that work immediately with them.  
	  Early revisions will attempt to mark the cuts for all affected code.
	  This first revision DOES NOT COMPILE, welcome to the bleeding edge.


2006-08-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-03:
	  Added ICE_INVARIANT macro, updated util/likely.h, 
		updated TODO and Object/devel_switches.h
	  Some distribution clean-up in test/ directory.


2006-08-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80-02:
	  util/packed_array.{h,tcc}: split-off non-offset versions
		of packed_array classes, saving a bit of memory
		on arrays with no offsets, such as all packed collections
		in HAC and its intermediate forms.  
	  Object sizes affected, and test suite has been updated
		for all affected test cases.  


	* HACKT-00-01-04-main-00-80-01:
	  Diagnostics for class and structure sizes, 
		prior to invasive surgery.


2006-08-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-80:
	  No source revision, duplicate tag.


2006-08-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-61:
	  No source revision, just documentation and Makefile maintainence
		in test/.


2006-08-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-60:
	  BUG FIX: improper handling of conditionally uninstantiated
		instances in the create and alloc phases.  
		Thanks to Filipp Akopyan for original test case. 
		New (reduced) test cases: parser/prs/cond-0{5,6,7}.hac


2006-08-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-59:
	  prsim: latent optimization bug fix, forgot to relocate rule_map
		entry upon compaction of ExprAlloc pass.  A reduced test case 
		is difficult to produce because it depends on how expressions 
		happen to be allocated.  (Triggering test case is not small, 
		and only occurred while stepping/cycling through prsim run.)
	  Elsewhere, minor documentation updates.  


2006-08-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-58:
	  No source revision.
	  Documentation updated regarding cast2hac migration from cflat.
	  General global Makefile maintainence of cvsignore and distribution.  


2006-08-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-57:
	  cflat lvs -t bug fix: forgot to unroll the process-type-reference
		before passing it to the creator/allocator, duh.  
	  Updated test infrastructure for cflat-lvs-ing and added a few
		minimal test cases using templated type to demonstrate fix.  


2006-08-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-56:
	  prsim: added command 'assert-queue' to assert that 
		event queue is not empty, useful for test scripts for
		checking that deadlock did not occur after step [n].  
		Updated some test cases to use this.  


2006-08-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-55-merged-prsim-07-09:
	  Merge of -prsim-07 branch (revision -09).
	  Summary (prsim):
		committed old FIX_BOGUS_INTERFERENCE and
			ALLOW_UNSTABLE_DEQUEUE flags, now permanent.  
		Implemented fine-grain error-control, so the behavior on 
			{weak-,}{instability,interference} may be customized:
			policies are: ignore, warn, break.
		mode reset and mode run are now defined in terms of these.
		event-causality is now tracked *per value* per node
			to distinguish last arriving inputs of
			pull-up and pull-down transitions, 
			flag: PRSIM_SEPARATE_CAUSE_NODE_DIRECTION
		causes are now attributed upon event dequeue, not enqueue.
		'backtrace' command walks causal event history, 
			useful for critical path analysis in non-random mode,
			and QDI violations in random timing mode.  
	  Also wrote more descriptive usage() for each prsim command.


2006-08-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-54-prsim-07-09:
	  Cleaned up sign-correctness of char types in prsim.
	  Status: ready to merge to trunk.


	* HACKT-00-01-04-main-00-79-54-prsim-07-08:
	  Implemented and tested 'backtrace' command (sweet!).
	  One test case added: test/prsim/oscil-backtrace-01.prsimrc


	* HACKT-00-01-04-main-00-79-54-prsim-07-07:
	  Committed PRSIM_FINE_GRAIN_ERROR_CONTROL developer switch.  
	  Next: diagnostic 'backtrace' command using direction-specific 
		causality of node-events.


2006-08-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-54-prsim-07-06:
	  Mostly aesthetic patch (minor)
	  Committed PRSIM_ASSIGN_CAUSE_ON_DEQUEUE.  
	  Much simplification of conditional code (SEPARATE_CAUSE_NODE_DIR).
	  minor TODO: clean-up prsim headers and [un]signed char types.


	* HACKT-00-01-04-main-00-79-54-prsim-07-05:
	  Completed and enabled PRSIM_SEPARATE_CAUSE_NODE_DIRECTION patch, 
		but code is a mess of conditional flags, needs a clean-up.  
		No regressions caused in test suite!
	  Next: commit PRSIM_ASSIGN_CAUSE_ON_DEQUEUE
	  TODO: diagnostic 'backtrace' command using new features.  


	* HACKT-00-01-04-main-00-79-54-prsim-07-04:
	  Added sim/prsim/Cause.h: for advanced cause tracking structures.
	  PRSIM_SEPARATE_CAUSE_NODE_DIRECTION still disabled in this snapshot.
		Much coded added to use it in Node/Event...
	  Minor switch added and enabled: PRSIM_ASSIGN_CAUSE_ON_DEQUEUE:
		instead of assigning cause on enqueue of event, 
		assign the cause after event actually happens, so unstable 
		events don't get mistakenly and prematurely assigned blame.  
		This causes no regressions.  
	  Next: resume cause-separation.  


	* HACKT-00-01-04-main-00-79-54-prsim-07-03:
	  prsim: added commands 'unstable' 'weak-unstable' 'interference'
		'weak-interference' which all take one of the arguments
		'ignore' 'warn' 'notify' (same as warn) 'break'.
		These commands control the simulation policy on the
		named violations.  
	  State.cc: corrected the default values of violation policies,
		reset() also resets the violation policies.  
		propagate the result of evaluation and flush_pending_queue
			to callers to conditionally set the STOP flag.  
	  A few test-cases updated to allow unstable behavior where intended.
	  TODO: backtracing events and value-specific causality.


	* HACKT-00-01-04-main-00-79-54-prsim-07-02:
	  prsim: devel-switch: PRSIM_FINE_GRAIN_ERROR_CONTROL added:
		be able to control whether or not diagnostic is printed
		and whether or not to break runs for each type of 
		violation {weak-,}{unstable,interference}.
		Current snapshot causes no regressions with/without switch.
	  TODO next: commands to alter behavior.


2006-08-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-54-prsim-07-01:
	  This branch is for another series of prsim improvements.  
	  Some plans are written in the TODO file.
	  In this revision, only committed old PRSIM_ALLOW_UNSTABLE_DEQUEUE
		and PRSIM_FIX_BOGUS_INTERFERENCE flags.  


2006-08-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-54:
	  Added LVS spec directive 'cross_coupled_inverters'.
	  Added some base cflat lvs test cases.  


2006-08-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-53:
	  No *real* source revision.  
	  TODO: wish for unroll_references_sloppy (not packed)
	  s/unroll_references/unroll_references_packed/g for clarity.  
	  lib: fixed acknowledge of inactive_reset_bitbucket_a
	  test/lib: added source-sink pair stability tests.
	  prsim: checkpointing now omits cause_rule because rule/expr IDs
		are optimization-sensitive.  Cause-rules are only needed
		for determining delays for queue scheduling anyhow.  


	* HACKT-00-01-04-main-00-79-52:
	  prsim: fixed minor 'getall' bug, now allow references to
		arrays, even with underspecified dimensions, which will
		collect all instances matching hierarchical prefix, 
		and need not be dense.  Implemented
		simple_meta_..._reference::lookup_globally_allocated_indices.


	* HACKT-00-01-04-main-00-79-51:
	  No source revision.
	  Updated config substitution script to work with autoconf-2.60.
	  Now autoconf-2.60 is supported and bootstraps correctly. 


2006-08-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-50:
	  Reverted earlier patch for bison-2.1, deduced that none is needed
		and that any perceived breakage was caused by autoconf-2.60.
	  Bison-2.1 is now supported, but autoconf-2.60 is still in jail.  


2006-08-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-49:
	  No source revision, just updating top-level maintainence files
		and noting that this snapshot doesn't quite jive with
		autoconf-2.60 bison-2.1 yet.  Investigation and support
		are pending.  


2006-08-04	Sandra Jackson		<sjj3@cornell.edu>

	* HACKT-00-01-04-main-00-79-48:
	  lib/ update only, no source revision.  


2006-08-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-47:
	  Minor bug fix: removed assertion about unique insertion
		of using/open namespace directive, 
		allowing redundant directives.  
		test case: parser/namespace/029.hac
	  scopespace::namespace_list upgraded to unique_list


2006-08-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-46:
	  No source revision, just library additions.  See lib/ChangeLog.


	* HACKT-00-01-04-main-00-79-45:
	  spec exclhi/lo directives now allow one argument.
		lib: fixed the channel excl directives accordingly
	  LVS_exclhi/lo directives now cflat output a flattened list
		of nodes (without grouping), and filters out singletons.  
	  Added some debugging handles to SPEC directive code.  


2006-08-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-44:
	  prsim: added mode reset/run finally.  
	  Added some missing test cases with unset[all], 
		and one new test case for mode.  


2006-07-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-43:
	  For now, top-level PRS are only accepted in the global namespace, 
		not in any other namespaces.  This may cause inconvenience
		if instances in other namespaces are involved.  
		Support could be added in future without much difficulty, 
		but we're punting.  
	  Moved some parser functions into separate unit to avoid
		yacc/bison configuration issues (works with yacc again): 
		parser/type.cc, parser/instref.cc
	  Defect: prs-literals cannot use qualified identifiers, thus 
		prevent access to instances in other namespaces.  
		See test case parser/prs/top-level-03 for reference.  


2006-07-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-42:
	  Moved sim/prsim/Reference.{h,cc} to parser/instref.h
		and parser/instref-parse.yy.in.
	  Grammar and AST checking supports top-level PRS.  
	  parser::def_body_item now subtype of root_item again.  
	  parse_context and entity::module now have a 
		pre-unrolled PRS::rule_set (resembling process_definition).
	  Top-level PRS are unrolled during create-phase, 
		after create_dependent_types.  
	  cflatting and prsim expression allocation now also traverse
		top-level unrolled PRS.  
	  Added only one minimal test-case.  


2006-07-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-41:
	  Added complete-type mini-parser parser/type-parse.yy.in, 
		along with sidekick lexer/type-lex.ll to libhacktparsers.la
	  cflat: added option -t <type> to ignore top-level instances and 
		work with one unpacked instance of the named type, 
		much like cast2lvs, but with all the general functionality
		of the rest of hackt cflat.  Pass type name in
		"quotes" on command-line/shell to protect template arguments.  
	  cflat: now uses better and more general getopt_mapped parsing,
		new in util::getopt_mapped.  
	  entity::module: added partial internal support for processing
		top-level PRS, at least during cflat passes.  
	  process_definition: reuses and exposes existing code to
		perform top-level-like unrolling and creating (for cflat -t).
	  instance_collection.tcc: didn't used to copy the initial
		instantiation statement ptr before, but is sometimes
		useful for diagnostics; deep-copies don't use it.  
	  cflat_context_visitor: __lookup_global_bool_id now uses
		footprint_frame_ptr to determine whether or not ID already
		belongs to global top-level, since we now can have PRS
		in the top-level scope.  This also fixes 
		cflat_printer::visit(footprint_rule)
	  Const-ified parser::type type-checking prototypes, 
		also subclasses in AST/type*.*.  
	  instref-lex: now accepts hexadecimal constants too.  
	  main/main_funcs.c: unknown_option moved to util/getopt_mapped.cc
	  Split-off AST/reference.h from AST/expr.h.
	  TODO: add top-level PRS to the front-end, write test cases.  
	  Next (minor): relocate sim/prsim/Reference.{h,cc} into 
		the parser/instref-parse module.  


2006-07-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-40:
	  "Lordy, lordy, patchlevel 40!"
	  No source revision.
	  Makefiles and support added for advanced graphviz figure generation.
		Automated PRS placement, baby!


2006-07-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-39:
	  Fixed latest bug with prsim -O1 expression allocation:
		was missing relink to parent-node and also checking
		freed expression slot unnecessarily.  
		Added some debugging handles while we were at it.  


	* HACKT-00-01-04-main-00-79-38:
	  sim/prsim/ExprAlloc.cc: replaced assertion of macro/directive
		existence with warning check for non-existence because
		not all tools will have the same set of directives.  
	  Test suite: run prsimexpr and dot generation test with -O1
		for validation purposes (no output comparison done).  
	  TODO: fix -O1 consistency bug in a new test case.


	* HACKT-00-01-04-main-00-79-37:
	  Added support for dependency generation during compile
		usage: hackt compile -M <depfile>
	  Revised lexer::file_manager, and main/compile,parse_test modules.  
	  Added dependency information to compile_options.  
	  .haco rules have been updated in all Makefiles in testsuite, 
		but the .depend files are not used yet.  
	  TODO: automate -include of all .depend files, without
		chicken-before-egg problem.  (auto-touch .depend?)


2006-07-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-36:
	  Fixed a token leak during LL scanning of import directive in lexer.
		Thanks to Sandra for reporting.  
		Several test cases added to test/lexer.
	  Added some documentation to generated code for parse-symbol
		resolution, generated from parser/common-union-type.awk.


2006-07-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-35:
	  Lookup of unqualified identifier in namespace now checks
		open aliases and namespace (forgot before!)
		Member lookups however are still local.  
		Multiple candidate matches are reported as ambiguous.  
		Added new test cases to parser/namespace/027,028.
	  util/memory pointer classes added relational member operators.  
	  lib: added 'logic.hac' gate library.  


2006-07-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-34:
	  lexer options header improvements: partial support for bison-2.1.
		really wishing for cx-parse completion...
		NB: one test fails with bison-2.1, investigation pending.  


2006-07-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-33:
	  cflat -finclude/exclude prs now works, forgot to check flag before.  
	  lib/channel.hac updated for aggregate channel template definition.  


2006-07-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-32-merged-prsim-06-06:
	  Merged prsim-06 branch.  Summary:
	  Fixed bogus interference masking instability problem.
	  Allow for alternate behavior of simulating unstable event, 
		allowing dequeuing of unstable events.
		cmds: 'unstable-dequeue', 'unstable-unknown' (default)
	  General extension to simulation to continue reasonably
		past unstable events.  
		'setf' command to forcefully set a node, overriding
			any pending events.  (Human event upset.)
		'unset' to re-evaluate pull-state of inputs to node
			to effectively undo a coercive 'setf', corrected
			nodes will schedule events to restore their
			"proper values."  (Human upset tolerance.)
	  More test cases updated and corrected.  


2006-07-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27-prsim-06-06:
	  prsim: added 'unset' command to force re-evaluation of a node, 
		useful to clear the effects of a coerced 'setf' that
		overrode a pending event on a node, which can result
		in a stuck state if the nodes inputs do not change.  
		'unset' will re-enqueue an event on a node if it should
		be transitioning to a corrected value.  
		'unsetall' command re-evaluates ALL nodes, should the user
			become forgetful or plain lazy.  
	  prsim: minor fix in State::set_node_time's diagnosis of 
		vacuous event, also forgives vacuous events caused by force.  
	  Added test cases on ring oscillator to demonstrate:
		test/prsim/oscil-unset-0{1,2,3}.prsimrc
	  Status: no more work on this branch, merge.  
		Leaving prsim developer switches in to be removed later...


2006-07-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-31:
	  AST: %s/guarded_definition_body/guarded_instance_management/
	  Eliminated a bunch of useless node_list AST intermediate classes, 
		substituting with node_list<...> typedefs.  
	  Grammar: language bodies and typedefs are no longer allowed
		inside loop/conditional scopes, only instance_management
		items are allowed inside.  
		NOTE: NO prs { ... } inside conditionals and loops!
		PRS: added support for conditional blocks (optional
			else clause) in rule lists.  (It's about time!)
	  Object/lang/PRS.{h,cc}: new class rule_conditional for 
		unrolling conditional scopes of PRS.  
	  Enabled some pending test cases, and some new ones.  


2006-07-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-30:
	  Minor fixes to diagnostics for new operators, 
		including a few test case updates.  
	  New test cases for operators in meta-language and CHP.  
	  Clean-up of parser/hackt-parse.yy.in.


2006-07-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-29:
	  ALERT: significant additions/revisions to front-end, grammar/parser.
	  CHP: concurrent action groups are no longer limited to send/receive 
		communications, any statements maybe be grouped in parallel 
		with ',' operator, which binds tighter than the ';' sequencer.  
		Sequences may be grouped explicitly by wrapping in
			braces, e.g. P,{Q;R}
		Single-action groups are checked efficiently as single actions.
	  Lexer: added support for hexadecimal integer constants, 0xF00D!.  
	  Expressions (applies to meta and nonmeta unless otherwise noted):
		'~' is overloaded for boolean and bitwise-integer negation.  
		logical ops '&&' '||' are used for booleans (was: '&' '|').
			Use '!=' relation for logical-XOR.  
		bitwise ops '&' '|' '^' are used for integers (NEW).
		If you use them type-incorrectly, compiler will issue a 
			warning and read your mind and do what you intended.  
			Because I'm nice that way.  
		relational expressions (comparisons) now work for 
			integers and booleans.  (<,>,<=,>= not yet for bools).
			boolean '!=' is XOR, and '==' is XNOR.  
		Added support for arithmetic shift operations << and >>.  
		unary integer operations now include '-' and '~', 
			added char field to class int_negation_expr.  
		Updated Object/expr/operator_precedence.h entries
			to accommodate new bitwise operators.  
		!!! expression grammar reworked to no longer require
			using 'shift_expr' for general expressions, but
			rather plain 'expr', at the inconvenenience of
			require extra parens around < and > relational
			expressions, as a disambiguator from 
			template-dependent expressions (x<T>::y).  
	  All affected test cases updated.  
	  update of util/operators.h (see util/ChangeLog)


2006-07-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-28:
	  Added a few utility class templates to util/ library.  


2006-07-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27-prsim-06-05:
	  prsim: introduced event 'force' flag to indicate that user
		coerced a particular event.  Added support for handling
		forced events by redirecting conflicts to pending queue.  
	  BUG FIXED: 'dequeue_event' wasn't checking for queue-empty now that
		events may be killed.  
	  TODO: issue: how to recover from user-coerced event?  problem is
		that vacuous events don't propagate so a coerced node
		may never again be re-evaluated, resulting in a quasi-deadlock
		'stuck' state where pull on a node takes no effect.  
		Reminder: no support for SEUs (no intention)
		Proposal: user must supply an 'unset' command to trigger
			re-evaluation of a coerced node's inputs, 
			the equivalent of releasing from coercion.  
			An 'unset-all' command might be useful too.  
		Can demonstrate this with ring-oscillator test cases.  


2006-07-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27-prsim-06-04:
	  More improvements to be able to simulate instability scenarios
		with different realistic behaviors, fixed ISEs.  
	  TODO: accomodate anomalies in the event queue when user
		coercively sets nodes with 'setf'.  Before, such commands
		were just dropped with a warning if there was a pending event.  
		We can now use the instability mechanism to work with this.  
		Might add a 'force' flag as done with tools/prsim.  UTFL!


2006-07-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27-prsim-06-03:
	  Fix for last patch, to get both modes of handling instabilities
		working to not cause prsim test regressions, with a few
		old cases updated with the correct expected behavior.
		No more bogus interference.  (PRSIM_FIX_BOGUS_INTERFERENCE on)
	  TODO: Some new pending test cases still need to be fixed.  
	  TODO: *consider* replacing pending queue with pending map [node], 
		for code simplicity, maintainability, comprehensibility,
		and flexibility.  Will it cost performance?  Hard to say.  
		This is where a set of benchmark tests would help.  


2006-07-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27-prsim-06-02:
	  Found tools/prsim patch to fixes the false-interference problem
		during unstable events, depending on evaluation ordering.  
		diff -ubd -r1.10 -r.11 prs.c (2006-04-24)
		Applied logical-equivalent patch by hand in hackt's prsim.
		Patch is wrapped in PRSIM_FIX_BOGUS_INTERFERENCE switch, 
		tentatively disabled until test updates are grokked.  
	  TODO: properly cancel pending events affected by the instability.  


2006-07-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27-prsim-06-01:
	  Branch for fixing prsim internals and finishing missing features.
	  prsim: new commands
		setf - set forcefully, overriding pending events
		setrf - set random delay forcefully, overriding pending events
	  prsim/Event.{h,cc}: added flags member to Event structure,
		EventPool runs some validity checks upon destruction.  
	  prsim/State.cc: now able to kill events on the queue, 
		dequeue_event automatically skips over them (and frees them), 
		set_node_time can now be forced, overriding pending events.
		BUG FIXED: X -> X transition forgot to deallocate event.  
		FIXED: dequeuing of unstable events is accomplished
			using Event::kill().
		Killed events are not shown in dump.  
	  BUGS: noted editline EOF problem, with known workaround.
	  Fix for false interference coming shortly.  


2006-07-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-27:
	  Moved prsim development flags to sim/prsim/devel_switches.h (new).
	  Factored out instability/interference checking code into sub-method.
	  New switch: PRSIM_ALLOW_UNSTABLE_DEQUEUE enables mode
		to optionally choose behavior of instability:
		re-enqueue X (old), or dequeue event (new).  
	  New commands 'unstable-unknown' or 'unstable-dequeue' to pick mode.
	  Added a few test cases for this feature.  


2006-07-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-26:
	  Committed old patch flags for ENABLE_PRSIM_EXCL_CHECKS, 
		and DEDUCE_PRSIM_EXPR_STATE.  


2006-07-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-25:
	  No source revision, tag bump only.  


2006-07-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-24-merged-cow-07:
	  Branch merge.  Summary:
		copy-on-write expression unrolling, hence 'cow'
		completed aggregate l/rvalue and instance references
			for higher dimensions.  
		Added a zillion test cases.  
		Minor adjustments to util library.


2006-07-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-23:
	  CRITICAL BUG FIX in pointer class library, see util/ChangeLog.


2006-07-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-20-cow-07:
	  Implemented: aggregate lvalue and instance reference unrolling
		for both array constructions and concatenations.
		Also factored out common code very cleanly into
		aggregate_reference_collection_base methods.  
	  AST/expr.cc: check that arguments of concatenation are non-scalar.  
	  Added another load of test cases for new features and code paths, 
		not as thorough coverage as before, but good enough.  
	  Status: last revision on this branch, barring any compiler-isms.  


2006-07-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-20-cow-06:
	  Implemented checking and unrolling of array concatenations!
		Well, THAT was easy -- thanks to good reuse of existing code.  
	  Added another batch of param/ test cases to support.  
	  TODO: port new aggregate value-reference concatenation code 
		and re-apply to aggregate instance-references... 
		while we're at it.  Add connect/ test cases.  


	* HACKT-00-01-04-main-00-79-20-cow-05:
	  Removed useless nonzero size assertion from 
		util::packed_array_generic.
	  Added useful error message when assigning lvalue that 
		already has value.
	  Added a TON of param/ test cases.  


2006-07-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-20-cow-04:
	  Implemented first draft of aggregate construction for 
		higher dimensions, aided by a smart operator overload
		in util::packed_array_generic.  
	  TODO: param test cases up the wazoo, debug if necessary.
	  TODO: possibly implement value-array concatenation while we're at it.


2006-07-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-22:
	  Minor util test updates for better diagnostics.  
	  stacktrace.cc, static_trace.cc: inserted local-static declarations
		of std::ios_base::Init to guarantee proper iostream
		initialization ordering during global static inits.  
		This is a hard-to-trigger latent bug, only possibly triggered
		during global initialization diagnostics.  
	  Added missing REQUIRES_STACKTRACE_STATIC_INIT to 
		local_static_store_test.cc.


	* HACKT-00-01-04-main-00-79-21:
	  Added another parser hack script to accommodate bison-2.1, 
		which uses some preprocessor variable YYENABLE_NLS
		without defining it a priori.  Damn you, bison.  
	  This snapshot tested against apple-gcc4 (build 5341) for the 
		first time and found one utility library test failure:
		local_static_store_test.  
		Suspect compiler bug, investigation pending.


2006-06-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-20-cow-03:
	  Just cleaned up COW_UNROLL_RESOLVE_RVALUES switch, committed.  
	  Next: finish resolving aggregate_meta_value_reference for
		higher dimensions, maybe concatenations...


	* HACKT-00-01-04-main-00-79-20-cow-02:
	  Copy-on-write meta-parameter-value lists. 
		Had to touch template_actuals...
	  Makefile.am: added local distclean-deps to help remove
		.deps directories ("Directory not empty" problem).
	  Implemented quasi-covariant __unroll_resolve_rvalue to return
		a scalar value in place where scalars are expected, 
		and avoid extra cross-casting between other unroll methods.  


2006-06-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-20-cow-01:
	  Mini-branch for patching expression unrolling.  
	  Copy-on-write unroll_resolve_rvalues eliminates wasteful copying
		when unroll-resolving meta parameter expressions.  
	  Results in fewer persistent heap objects for identical constants, 
		many test cases updated accordingly.  
	  TODO: apply to param-expr-lists, implement local __unroll to 
		eliminate cross-cast on return.  


2006-06-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-20:
	  Constified return pointer for unroll_resolve_rvalues of
		param_expr's, should be read-only for copy-on-write.  


	* HACKT-00-01-04-main-00-79-19:
	  Documentation only.  


2006-06-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-18:
	  No source revision, documentation patch only.  


2006-06-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-17-merged-CHP-02-14:
	  Merged CHP work branch, includes:
		CHP footprint unrolling
		copy-on-write unroll-resolution of nonmeta expressions
		Many minor CHP and channel bug fixes.  
	  Handful of test cases updated as a result of object size changes.  


2006-06-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-14:
	  Cleaned up all outstanding devel_switches. 
	  Cross-checked against gcc-4.x.
	  Ready to merge to trunk. 


2006-06-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-13:
	  nonmeta arith expr checks for special case where one operand 
		as magic width 0 (parameter-int).
	  nonmeta arith expr folds unroll-resolved constants.  
	  Bunch of CHP test cases added testing meta and nonmeta indexing of 
		data and channels and value aggregates.  
	  Status: branch mature enough
	  TODO: cleanup devel_switches, and merge branch. 


2006-06-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-12:
	  Fixed minor bug in canonical_type_base::dump_template_args, 
		unprotected dereference is now guarded, duh!
	  canonical_generic_chan_type now requires direction argument.
	  direction of canonical channel type is now set and propagated
		through type-unrolling resolution (forgot before, oops).
	  Test cases now show channel direction in unrolled instances
		and footprints's sub-instances (updated).  
		A few tests lost const-param-expr-list, resulting in
		only index differences, no other noticeable difference, 
		cause of this change not quite known.  


2006-06-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-11:
	  Further improved nonmeta expression unroll-resolution to substitute
		constants deduced from indexed expressions where possible.  
		TODO: mixed meta/nonmeta index test cases.  
	  footprint and footprint-map dump augmented with expression-context
		argument for diagnostic pretty-printing.  
	  CHP assignments and sends now use a modified type-check
		at parse-time to allow an exception for int:=pint.
	  Added dimensionality check to CHP assignment checking.  
	  const_index_list is now list of const-const_index pointers
	  TODO notes: channels


2006-06-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-10:
	  Added persistence of chp_footprint in footprint.  
	  Enabled dumping of CHP footprint, should only print
		when CHP footprint is not empty.  
	  Implemented unroll_resolving of simple_nonmeta_value_references
		using tag policy : datatype_tag vs. parameter_value_tag.
		For parameter references, we resolve values to constants
		where possible, whereas others retain their 
		optionally-nonmeta-indexed form.  
	  Footprint binary size increased for CHP footprint, 
		test cases updated accordingly.  
	  Added one test case: chp/074.hac
		need many more...


2006-06-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-09:
	  Finally back into compiling/linking state!
	  Finished implementing unroll_resolve_copy in the CHP class
		hierarchy, which can now resolve a footprint efficiently.  
	  Bunch more minor additions of unroll_resolve_copy interfaces
		to the expression hierarchy.  
	  NOTE: none of this new code is tested yet, but no regressions
		caused so far (old code untouched).
	  TODO: test cases, test cases, test cases
		cleanup devel_switch flags, verify CHP footprint objdumps.  


	* HACKT-00-01-04-main-00-79-03-CHP-02-08:
	  Wrote expr-hierarchy's unroll_resolve_copy methods, 
		leaving only undefined references to new CHP unroll methods.  


2006-06-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-07:
	  Compiles but does not link.  Most new prototypes in place, 
		only (most trivial) definitions are missing.
	  Added entirely virtual function hierarchy for unroll-resolving
		nonmeta expressions and references.  
		The gist of the implementation is to be able to 
		copy (reference-counted) pointers to results that do not
		change as a result of unrolling meta value resolution.  
	  Updated all unroll_resolve_copy prototypes to take 
		const (pointee) arguments and return const (pointee)
		pointers -- goes along with copy-on-write semantics.  
	  Most revisions from this patch are wrapped in
		#if COW_UNROLL_DATA_EXPR (Moo! copy-on-write)
	  TODO: fill in the definitions, and finish CHP footprint unrolling.  


2006-06-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-16:
	  Documentation only, no source revision.  


2006-06-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-15:
	  Updated dumping of physical instance collections to print
		dimensions, and full indices for public ports.
		This helps a lot with more accurate diagnostics.
		Tons of test case expect-dumps updated.  


2006-06-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-14:
	  Implemented certify_port_actuals for all typedefs.  
		This was forgotten before, now allows port forwarding
		for typedefs of definitions, e.g. in "lib/env.hac".
	  lib/ files modified, see lib/ChangeLog. 


2006-06-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-13:
	  Series of mInor bug fixes:
	  prsim check-ring (exclhi/lo) directive now automatically
		ignores rings of size 1, such as occurs with 1of1 rails.  
	  const_range::resolve_sizes() now throws bad_range (const_range)
		when a range is malformed, e.g. negative or backwards.  
		Callers now catch the exception and print useful error message.
	  TODO: fix port formals manager instance collection dumping
		for objdump diagnostics (missing dimensions of decl.)
	  TODO: re-define source/buckets with typedefs


2006-06-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-12:
	  Fixed dumping of template formal value collections (latent bug), 
		finally prints out the dimensions of parameter collections.  
		Implemented as: virtual value_collection::dump_formal(ostream&)
		Needed for accurate diagnostics.  Test cases updated.  
	  Minor documentation updates.  
	  TODO: investigating bug report submitted by Filipp.  


2006-06-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-11:
	  Makefile.am: split libhackt's instance objects Object/inst/*.o
		into its own convenience library libhacktinst.la 
		for size managability, reduces link bottleneck
		and link-time memory requirement.  
	  update: renamed to libhacktinstref.la and include 
		instance reference library/objects because of 
		mutual dependence.  


2006-05-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-10:
	  Minor bug fix: prsim initialize now resets check rings.  


2006-05-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-09:
	  No source revision, library and test cases only.


2006-05-30	Sandra Jackson		<sjj3@cornell.edu> 

	* HACKT-00-01-04-main-00-79-08:
	  No source revision, library only.


2006-05-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-07-merged-prsim-05-02:
	  Merged prsim built-in excl-checking rings.  


2006-05-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-06-prsim-05-02:
	  Verified excl-checking works with checkpointing.  
		State of check-rings is restored upon load, 
		as inferred from node values.  
	  Status: merge to trunk


2006-05-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-06-prsim-05-01:
	  Renamed some prsim excl_ring symbols to mk_excl_ring to distinguish
		from new check_excl_rings.  
	  Implemented built-in prsim exclhi/lo checking, not to be confused
		with mk_exclhi/lo forcing.  
	  LVS_exclhi/lo directives "exclhi", "excllo" given meaning to 
		hackt prsim, used to indicate excl. checking.  
		::check_node_args relaxed to allow arbitrary
		groupings of arguments, though args are treated as flat list. 
	  Node structure new bit-fields: NODE_CHECK_EXCL{HI,LO}
	  Renamed commands rings -> rings-mk, allrings -> allrings-mk.
	  New commands 'rings-chk', 'allrings-chk' -- dump checked exclusive
		hi/lo rings, all, or by node.  
		'checkexcl', 'nocheckexcl' enables/disables exclusive checking. 
	  TOOD: validate excl. checking vs. checkpointing.  


2006-05-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-06:
	  No source revision, just documentation.  


2006-05-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-05:
	  No source revision, just documentation updates in dox/.


2006-05-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-06:
	  Does not compile -- checking in code in-progress 
		before going on vacation.  
	  Proposing to implement copy-on-change expession unrolling
		for nonmeta expressions and references.  
		If any template-dependent parameters are resolved, 
		copy and replace sub-tree.  
	  CHP footprint will be same type as source tree, but with 
		meta parameters resolved.  


2006-05-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-05:
	  AST/expr.cc: id_expr::check_nonmeta... fixed lookup
		to accept nonmeta references.  
	  Devel. switch: ENABLE_CHP_FOOTPRINT in progress.
	  TODO: decide if any changes are necessary for unrolling CHP's IR.  
	  TODO: implement implicit decode of subscripts.  


2006-05-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-04:
	  Added is_nonmeta_data_lvalue trait to meta-classes to
		distinguish lvalue-able types from nonlvalue-able, 
		such as meta parameters.  
	  Enabled bunch more CHP test cases.  


2006-05-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-03:
	  Introduced int<0> as a magic int type suitable for typing
		pint's for the sake of creating nonmeta rvalue references.  
	  establish_collection_type, and commit_type_first_time now
		return good_bool to signal error status.  
	  Cleaned up Object/traits/class_traits_type.cc, and also
		initializes int_traits::magic_int_type_ptr.  
	  Added some new test cases for these.  


2006-05-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-04:
	  Added support for resolving/lookup-up global parameter values
		during unroll/creation.  This patch is a quick hack, 
		but is actuallysomewhat tested with new test cases.  
	  NOTE: the lookup of out-of-scope parameters starts with the
		parent namespace of the TYPE being instantiated, 
		not the namespace in which the instance is declared.  
		Added NOTES entry about this.  
	  Fixed minor bug with wrong exit status from a bad 
		instance declaration.


2006-05-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-02:
	  Added devel-switch USE_NONMETA_VALUE_REFERENCE to enable
		construction of nonmeta rvalue references to parameters.  
		Feature is untested.  
	  TODO: test new cases in parser/chp.


2006-05-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03-CHP-02-01:
	  Branch spawned for CHP language support development.  
	  Added NOTES entry discussing prospect of upgrading CHP
		to support nonmeta references over meta references.  
	  Added meta-loop selection construct to CHP grammar, 
		and added AST and IR classes 'metaloop_selection'.  
		Objective: to expand into equivalent fixed-way selections.  
		Also added persistent type key CHP_SELECT_LOOP_TYPE_KEY.  
	  Makefile.am: install scripts depend on config.status
	  common/ICE.cc: uses CVSTAG from cvstag.h
	  TODO: currently compiler rejects attempts create
		nonmeta_value_references to parameters, ... enable me!
	  TODO: iron-out test cases chp/065,066


2006-05-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-03:
	  Installed scripts: haco (compile), hacunroll, haccreate, hacalloc,
		hflat (cflat), hacprsim (prsim) for user convenience.  
		Scripts' names are also transformed by configure upon
		installation.  Scripts verified runnable in installcheck-local.
	  Also: should not be reference $(DESTDIR) on installed files, 
		only staged installations.  


2006-05-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-02:
	  More portability fixes, regarding nested types, using declarations,
		unused variables, iterator traits, explicit default ctors.  


2006-05-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79-01:
	  Portability touch-ups only, in util library.  


2006-05-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-79:
	  Makefile.am: added more preprocessor intermediate file suffix rules.
	  Minor source touch-ups for standard conformance.  


2006-05-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-24-merged-prsim-04-12:
	  prsim improvements merged:
	  new commands:
		'breaks' list breakpoints, 'watches' list watched nodes,
		'tcounts' 'notcounts' 'zerotcounts' (new) reset tcounts
	  Implemented checkpointing with 'save' 'load' commands.  
	  Implemented expression allocation optimizations:
		-f fold-literals and -f denormalize-negations, 
		together -O1, resulting in as much as halving memory required
		by expressions and shortening expression trees for speed.  
		Checkpoints are optimization-agnostic!
		Bunch of test cases to validate this.  


2006-05-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-12:
	  Added missing cause diagnostic to State::flush_pending_queue().  
		Few test cases updated accordingly.  
	  Added some basic test cases to prsim.
	  Branch matured for merging.  


	* HACKT-00-01-04-main-00-78-22-prsim-04-11:
	  Added Expr::is_disjunctive() when we only care if expr. type
		is OR or NOR.  
	  Bug fix in ExprAlloc's OR-combination, reference *new* expr, 
		which is not necessarily the last one.  
	  More assertions in structural check.  
	  Updated Expr::*_pull_state() functions.  
	  Enabled -O1 consistency testing for all prsim test cases... PASS!
	  Consider re-enumerating node-value expr-pull... dangerous.
	  Status: perhaps a few more test cases, then merge.  


2006-05-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-10:
	  Added support for debugging checkpoints by producing textual dump.
	  Can invoke: hackt prsim -d <checkpoint>
	  Test support added for diff-ing checkpoints for validation.  
	  Adjusted parenthesization heuristic for pretty-print.  
	  ExprAlloc: denormalize_negation now works on children expressions
		as well as children nodes.  
	  Checkpoint no longer include rule-attribute map because it is 
		both stateless and dependent on the expression allocation.
	  -O1 not quite ready yet for prime time -- more testing required.  


	* HACKT-00-01-04-main-00-78-22-prsim-04-09:
	  cflat_visitor::visit(const state_manager&) now overridable.  
	  Updated PRSIM::Expr::parenthesize, easier to understand/use.
	  Implemented expression allocation optimization in prsim:
		-f fold-literals : skips literal node, and node fans out
			directly to expression, saving a ton of literal exprs.
		-f denormalize-negations : DeMorgan's transformation on
			expressions of negated literals, also saves a ton.  
		-O0 disables opts, -O1 enables both of the above.  
	  ExprAlloc: now maintains freelist of expression slots released
		as a result of optimizations.  Compaction is performed at end.  
	  Small fix to free_list interface in util/memory/free_list.h.
	  TODO: compare checkpoints generated by optimized vs. unoptimized
		prs expressions (-O0 vs. -O1), should be identical.  


2006-05-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-08:
	  Updated ExprAlloc::allocate_new_not_expr: just toggle NOT flag!
		Few graphical test cases updated in parser/prs.  
	  Provisions for expression allocation optimizations, 
		added flag set for ExprAlloc-ation, set by main/prsim.cc.
	  New options (and -fno counterparts): to be implemented next.
		-f fold-literals : eliminate leaves (saves memory, faster)
		-f denormalize-negations : reverse DeMorgan transformation.
		-O1 : both of the above.
	  NOTE: checkpoint files are valid across differently optimized
		invocations of prsim because intermediate expression
		state is reconstructed from nodes (which don't change).  


	* HACKT-00-01-04-main-00-78-22-prsim-04-07:
	  Checkpointing now no longer writes out expression state, but rather
		reconstructs it from the nodes by re-using evaluation
		propagation, without affecting the queues.  
		Results in dramatic reduction in checkpoint size.  
		Flag: DEDUCE_PRSIM_EXPR_STATE in "sim/devel_switches.h"
	  Factored out evaluation phase of State::propagate_evaluation
		into its own subroutine, re-used in checkpoint loading.  


2006-05-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-06:
	  prsim now tracks transition counts, but not direction specific, 
		and ignores transitions to X.  
	  New prsim commands:
		'breaks' list breakpoints.
		'watches' list all watched nodes.
		'tcounts' show tcounts in node info display.
		'notcounts' hide tcounts
		'zerotcounts' reset tcounts
	  update: 'get' now prints cause of last transition, 
		and tcounts if enabled.  Few prsim test cases updated.  
	  Handful of new test cases for new commands.  


2006-05-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-05:
	  Minor fix in node state checkpointing.  
		Event queue reconstruction may use different newly
		allocated event indices.  
	  Enabled checkpointing tests for all existing prsim test cases, 
		all pass thus far.  


2006-05-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-23:
	  util library added interface to histedit-style editline library.
		details in util/ChangeLog.  
	  No other hackt source revisions.  


2006-05-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-04:
	  prsim checkpointing code, first draft, untested.  
	  some enhancements in util library, see util/ChangeLog.


2006-04-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-03:
	  Just clean-up, committing the cause-tracking patch.  


	* HACKT-00-01-04-main-00-78-22-prsim-04-02:
	  prsim implemented node-to-node cause tracking, based on
		VLSI/tools/prsim (tag: PRSIM-original).  
		prsim test cases updated accordingly.
	  struct NodeState given __attribute__((aligned)).
	  Command.cc:Step: factored out print_watched_node() for consistency.
	  Next: clean-up only for patch sake.


2006-04-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-prsim-04-01:
	  Branch for remaining features I had planned for the baseline
		prsim-simulator.  
	  Features reserved for digital simulation will not be included here.  
	  Committed the ENABLE_PRSIM_CAUSE_TRACKING switch.  


2006-04-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-22-merged-maps-03:
	  Minor branch merge -- mostly just map substitutions.  


	* HACKT-00-01-04-main-00-78-21-maps-03:
	  Replaced qmap with std::map in several places.  
	  Decided to keep qmaps for global static registry maps, because
		those seem like suitable uses, wanting const operator [].  
	  Makefile.am: updated .cc.ii dependence rule to use CXXPREPROCESS
		builddate.h only depends on ChangeLog now.
	  Cleaned up TODO, closed some old entries.  
	  Ready to merge to trunk.  


	* HACKT-00-01-04-main-00-78-21-maps-02:
	  Clean up of previous revision only.  


	* HACKT-00-01-04-main-00-78-21-maps-01:
	  Branch for cleaning up implementation and use of maps and hash_maps.
		Phasing out our old friends hash_qmap and qmap for simplicity.
	  This revision has flagged out hash_qmaps from the source.  
	  Next revision will purge, then we clean out qmaps.  


2006-04-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-21:
	  Cleaned up unroll_context_value_resolver.
	  Turned on union-find canonicalization with 'shortest' alias name, 
		which was mistakenly disabled before.  
		Only create-tests werew affected and updated.  


2006-04-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-20-merged-icc-01-04:
	  Merge of batch of icc portability fixes.  To be continued later.


2006-04-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-19-icc-01-04:
	  Moved method definitions out of unroll_context_value_resolver.h
		into .cc file to avoid early instantiation during
		header check.  The .cc is compiled separately, but could be
		included in the invoking .cc file if deemed beneficial.  
	  channel_traits::collection_type_manager_parent_type
		is no longer typedef'd because nested typedef not allowed 
		as a base class (standard 7.1.5.3).  Definition moved to
		channel_instance_collection.h, re-defined as trivial
		derivative of the general_collection_type_manager.
	  fixed typo in port_alias_tracker.cc, where union-find
		flattening wasn't occuring, but will uncomment only
		after branch-merge.  
	  Other .tcc files: added necessary headers to satisfy type 
		completeness in the event of early instantiation,
		from non-template-dependent code.  
	  Status: terminating this branch here, though icc still
		can't compile many .cc units.  All header checks now pass
		at least, but more work to be done beyond.  
		This is a good point to check in the work so far.  
	  Thus far, used the following configure params:
		'CC=icc' 'CXX=icpc'
		'CPPFLAGS=-I$ICC_ROOT/include -I$ICC_ROOT/include/c++'
		'CFLAGS=-O3'
		'CXXFLAGS=-O3 -wd11,171,473,810,1418,1476,1505,1682,1683'
		'LDFLAGS=-L$ICC_ROOT/lib -lcprts -lunwind'


2006-04-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-19-icc-01-03:
	  Object/inst/*_collection.tcc: No empty macro arguments.  
	  Bunch more fixes in the util/ library headers.  


2006-04-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-19-icc-01-02:
	  util library configuration fixes only.


2006-04-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-19-icc-01-01:
	  Mostly autoconf/configure updates for icc portability.  
	  This snapshot does NOT compile in icc yet. 
	  Some traits headers cleaned up.


2006-04-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-19:
	  stacktrace directive clean-ups.  (trivial source edits)
	  automatic cvsignore generation dropped for VPATH builds (irrelevant)


2006-04-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-18-merged-prsim-03-09:
	  Branch merge of prsim fixes and features.  
	  Summary: reorganized SPEC, PRS macros, and rule-attributes into
		tool-independent checking functions, and tool-specific
		main() implementations.  
		ExprAlloc pass now handles macros, directives, attributes...
			importantly "after delays" and pass-gates, 
			and mk_exclhi/lo directives.  
		prsim now has support for per-rule attributes, 
			such as after delay, also support for excl rings.  
		Delay is introduced with cause-tracking during 
			propagate_evaluate.  NOTE: not the same as
			original prsim's per-node up/dn delay!
			Claim: this is better.  
		new commands: 'timing', 'rings', 'allrings'
		deprecated commands: 'random', 'norandom'


2006-04-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-09:
	  Minor bug fixes from testing excl-ring support.  
		Removed initial presizing of excl rings.  
		Tagged nodes as exclhi/exchlo upon appending to rings.  
		Set the excl_queue flag on nodes affected by events in the
			exclhi and excllo queues.  
	  ExprAlloc.cc: removed is_nand from OR-combination case (not sound).
	  sim/prsim/State.cc: tons of debug printing macros scattered.  
	  Improvements to stacktrace interface described in util/ChangeLog.  
	  Added few simple test cases.  


2006-04-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-08:
	  Added 'rings' command to dump all rings of which a node is a member,
		useful for near future debugging.  Also 'allrings' command
		dumps all exclhi/lo rings.  
	  sim/prsim/ExprAlloc.cc: fixed bug -- forgot to resolve canonical
		node ID before passing to allocate_new_literal_expr.  
	  Corrected implementation of excl-rings to use a vector of 
		sets of node indices (per ring).  
	  Added bunch of test-cases as promised.  
	  TODO: test excl-rings.  
	  Status: after excl-rings are basically tested, branch is mature.  


2006-04-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-07:
	  'after' rule attribute checks that delay expression is non-negative.
	  Factored out 'unaliased' functionality into base class, shared
		by tool-dependent implementations.  
	  Added simulator delay_policy<time_type>::zero.
	  sim/prsim/ExprAlloc.cc: cleaned up much code, preferring calling
		high-level functions over structure member manipulations.  
		OR-rule combination now checks for root-ness of expression
		before combining, to preserve rule-attribute distinctions.  
		A few test cases were updated in parser/prs/short-*
		Implemented SPEC directives for prsim: unaliased, assert, 
			mk_exclhi, and mk_excllo.  
		State is now capable of loading excl rings (untested).  
	  State::get_delay*() now checks for 'after 0' delay before 
		adding random delay value.  
	  State::propagate_evaluate() now delays search for root rule
		expressions until after propagation loop, for efficiency.  
	  TODO: test excl-rings, OR-combinations, after 0, pass-gate macros...


2006-04-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-06:
	  Relocated some macro/attribute/spec class declaration macros
		into respective *_registry.h header files.  
	  main/prsim.cc: now catches exceptions, thrown when there is
		violation of macro/directive input constraints during
		expression allocation of State initialization.  
	  sim/prsim/ExprAlloc.cc: refactored out common subroutines, 
		implemented 'passn' and 'passp' macros, and visitation of
		PRS macros and SPEC directives (untested).  
	  TODO: respect "after 0"
	  TODO: test cases using pass-gates.


2006-04-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-05:
	  Factored out tool-independent portions of PRS-macro and 
		SPEC-registry code into lang/PRS_macro_common.{h,cc}
		and lang/SPEC_common.{h,cc}, respectively.  
		Mostly affected are the checking functions associated
		with each directive, for sake of consistency.  
	  Templated definition of macro and spec definition entries, 
		to facilitate re-use with other tools and passes.  
	  Next: finish defining tool directives for ExprAlloc.cc
	  TODO: tool name disambiguation, 
		e.g. cflat, perhaps after trunk merge.  
	  TODO: universal macro name registry? to call checks
		using through tool-independent interface.  


2006-04-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-04:
	  Tiny changes, mostly adding of new tests in test/prsim.  
	  prsim: 'random' and 'norandom' are deprecated and give warnings.  
	  updated State::reset() to unwatchall nodes.  
	  'timing uniform' now uses optional argument.  


2006-04-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-03:
	  Provisional implementation of rule-cause tracking, to trace which
		rule fired for the purpose of using per-rule attribute info.
		Currently enabled by ENABLE_PRSIM_CAUSE_TRACKING flag
		in "sim/devel_switches.h" (new).
	  prsim: new 'timing' command to replace 'random'/'norandom'.
		There are two non-random modes: uniform and after.
		'uniform' is useful for transition counts,
		'after' is useful for delay estimation, more to come...
	  TODO: timing mode test cases, use of after-delay rule attributes.
	  TODO: test for new invariants involving rule-cause assignment.  


2006-04-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-17:
	  gcc-4.2 check!  sources brought to even tighter standard conformance.
	  See http://gcc.gnu.org/gcc-4.2/changes.html.
		Since template types with default parameters can no longer
		automatically bind to templates with more parameters
		and trailing defaults, we've added default wrappers
		template typedefs in most library structures.  
	  Explicit instantiations in sim / PRS registry units is 
		no longer required.  


2006-04-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-02:
	  Started to factor out common tool-independent functions of
		PRS rule attributes.  Tool-dependent passes, such as cflat
		and prsim expression allocation can (and should) derive
		from these to leverage code-reuse.  
	  sim/time.{h,cc}: added new delay_policy traits class, 
		with members such as invalid_delay, default_delay.  
	  sim/prsim/Rule.h: new structure for rule attributes.  
	  Implemented ExprAlloc rule attribute registry (After, Weak), 
		but their results aren't visible yet in the simulator.  
		footprint_rule visitation now traverses attributes list.  
	  PRSIM::State: added new rule_map to store/encode rule attributes.  
	  TODO: print out (and use) rule attributes in prsim.  


2006-04-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16-prsim-03-01:
	  Factored out parent classes cflat_visitor and cflat_context
		into cflat_context_visitor, inherited by SIM::PRSIM::ExprAlloc, 
		and entity::PRS::cflat_prs_printer.  Much common functionality
		shared between these two visitors.  
	  Object/global_entry_context_base: member savers defined
		in terms of util::member_saver.
	  other util library header cleanups, summarized in util/ChangeLog.


2006-04-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-16:
	  Added parameter assert 'Assert' spec directive.
		Implemented const_param::is_true for this.  
	  Templated definition of PRS macro definition entry, to facilitate
		re-use with other passes besides cflat.  
	  Minor renaming of attribute registry symbols for clarity and
		disambiguation with future uses.  
	  Started prsim attribute skeleton implementations.  


2006-04-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-15:
	  All configuration improvements.  
	  Most revisions in util/ library, noted in util/ChangeLog. 
	  chunk_map_pool-allocated classes that wish to use chunk size 64
		should verify that an unsigned 64 integer type exists.  
		If not, then fall back to size 32 chunk.  


2006-04-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-14:
	  prsim: Implemented command aliases in the interpreter.  Now all 
		commands consistently go through CommandRegistry::interpret().
		'alias' - define your own shortcut command, 
			interpreter performs prefix substitution by tokens.
		'unalias' - undefine an alias
		'unaliasall' - clear all aliases
		'aliases' - list all active aliases
	  Added test cases for this in test/prsim.


2006-04-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-13-merged-spec-02-04:
	  Branch merge: added support for grouped spec directive 
		arguments, e.g. the new min_sep SEU/layout directive.  


2006-04-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-11-spec-02-04:
	  Output format (cflat) of min_sep directive updated to 
		reflect the requested feature.  
	  yacc stderr check done (updated a few new tests).  
	  distchecked, and checked against g++-4.1
	  cleaned/committed GROUPED_DIRECTIVE_ARGUMENTS devel-switch.
	  Status: almost ready to merge to trunk


2006-04-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-12-merged-prsim-02-08:
	  Merge of prsim features branch.  Featuring new commands:
		'who' prints all aliases of a structure or node
		'getall' prints value of all nodes reachable from 
			the named instance.  
		'setr' set node at random time in future
		'status' print all nodes with given value
	  Also significant cleanup in instance_alias visitation, 
		using alias_visitor visitor hierarchy.  
	  Some library additions, such as member_saver and value_saver.


2006-04-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-11-spec-02-03:
	  cflat has new boolean tool-option for SEU (single-event-upset)
		modes of tools, e.g. prsim will emit min_sep directives.  
	  main/cflat minor fix in command-line arg. processing.  
	  PRS-macro default node argument checking now rejects
		grouped arguments because we havee no macros that use them yet.
	  SPEC-directive check_node_args's default also rejects grouped 
		arguments, but now we have one 'min_sep' directive that
		accepts them (still uncommon).  
	  module::cflat now catches exceptions thrown as a result of
		cflat-time errors.  
	  cflat_prs_printer supports pretty printing of grouped arguments, 
		and even unique-ifies their sets.  
	  Minor bug fix in parser error reporting checking spec num_params.  
	  Minor printing fix in parameterized source directives.  
	  TODO: yacc stderr outputs for a few new test cases.
	  TODO: support generalized pretty-printing of spec-directives
		and possibly PRS macros.  


2006-04-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08-prsim-02-08:
	  Implemented and tested prsim's 'getall' command, which reports
		values of all subnodes of a reference (canonically named).  
		Used trivial recursion over footprint frames, accumulating
		sub-entries' indices in an entry_collection structure (new).  
	  Added test cases in test/prsim.
	  After some maintainence checks, calling this end-of-branch.


2006-04-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-11-spec-02-02:
	  devel_switch: GROUPED_DIRECTIVE_ARGUMENTS enables grouped 
		spec/prs-macro arguments throughout the entire code-base.  
		Affects: AST/{PRS,SPEC/expr}.cc
	  Implemented type-checkers to aggregate grouped bool references
		amorphously for checking spec directives' arguments.  
	  Moved most forward declarations in Object/object_fwd.h
		into subdirectories' new forward declaration headers.  
	  Object binary sizes grew as a result, but no output regressions.  
		Test cases updated.  
	  Bunch of minor library additions in util/, see util/ChangeLog.  
	  TODO: update default macro/spec directive argument checking funcs.  
	  TODO: finish min_sep directive


2006-04-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08-prsim-02-07:
	  Finished implementing alias_matcher visiting.  
	  prsim 'aliases' command renamed to 'who' because there is already
		a category for user-defined 'aliases'.  
	  Basic testing works, but we should add some rigorous test cases, 
		using some of the examples in the test/parser/connect dir.  


	* HACKT-00-01-04-main-00-78-08-prsim-02-06:
	  Moved __cflat_aliases and __match_aliases outside of
		substructure_alias_base<> class, and into respective
		alias_visitor sub-classes.  (cleaner, more organized)


2006-04-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-11-spec-02-01:
	  Branch for extending spec directives: allowing arguments to 
		take groups of nodes (dimension-independent).  
	  AST/expr.h: new reference_group_construction class derived
		from inst_ref_expr instead of expr.  Useful when
		argument is restricted to references.  
	  parser::inst_ref_expr_list::postorder_* methods now take
		const context& argument (should have long ago...)
	  parser/hackt-parse.yy.in: spec-directive grammar update:
		can now take groups of node as single arguments.  
	  TODO: a sloppy type-check for grouping references into 
		sets of scalars.
	  TODO: example of use: min_sep layout spec-directive.  


2006-04-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-11:
	  Added cflat 'weak' rule-attribute to 
		"Object/lang/PRS_attribute_registry.cc" and included a few
		test cases in parser/prs/weak-{01,02}.hac.  


	* HACKT-00-01-04-main-00-78-10:
	  Configure improvements only, added config-params line to
		main/version.cc.  
	  Makefile.am: uses new config headers.  
	  config.h: now references configure-generated "__config__.h"


2006-04-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08-prsim-02-05:
	  More development of alias_matcher (draft written, but untested).  
	  Some more util library additions: value_saver.


2006-04-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08-prsim-02-04:
	  More development of alias_matcher visitor.  
	  alias_printer improved slightly.  
	  substructured trait classes given "may_contains" containership
		attributes (closure), also given rebind member template.  
	  Refactored out commonly used code in sim/prsim/Reference.cc
	  Some minor library enhancements in util/ChangeLog.  
		Most notably, the member-saver class template, and type_traits.


2006-04-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08-prsim-02-03:
	  Just committing the USE_ALIAS_VISITOR devel. switch.  
		Also footprint and physical_instance_collection don't
		derive from alias_visitee, but rather, just implement the
		required accept(alias_visitor&) interface.  
	  Cleaned up bits of obsolete code.


	* HACKT-00-01-04-main-00-78-08-prsim-02-02:
	  Changing hard-coded cflat_aliases traversal into visitor/walker
		pattern: base is alias_visitor in "Object/inst/alias_visitor.h"
		and first example is HAC::entity::alias_printer for cflat.  
		Next: commit devel_switches flag.  
	  Added half-celem-01 test case to demonstrate where prsim goes awry.  
	  TODO: print all aliases upon request for prsim:aliases command.  


2006-04-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-09:
	  Bug fix: forgot to enable aggregate references in port connections.
		Test case: parser/connect/130.hac
	  Fixed by moving much common code (static functions) from 
		simple_meta_instance_reference into
		meta_instance_reference<> base -- no new code!


2006-04-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08-prsim-02-01:
	  Branch for continued development of core prsim features.
	  Implemented 'setr' command (set node after random delay).
	  Implemented 'status' command.  
	  Node value arguments now can accept [TtFfUu] as well as [01Xx].
	  A few more prsim tests in test suite.  


2006-04-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-08:
	  Damn libc's fputs gives different return values on different
		platforms (I hate C), so it is safest to explicitly
		compare against EOF, than check for non-zero.  
		(fixes sim/prs/Reference.cc)


2006-04-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-07-merged-prsim-01-15:
	  Branch merge of -prsim-01 work.  
	  With this branch comes a working production rule simulator based
		closely on the behavior (and code) from tools/prsim
		and other earlier versions of prsim.  
	  Many commands have been 'ported' over, given some interface 
		improvements, as well as introducing new commands.  
	  Much left on the TODO:prsim list. 


	* HACKT-00-01-04-main-00-78-06:
	  Afternote: no source change, only lib additions from Sandra.  


2006-04-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-15:
	  Minor typo fixes, and cross-checked against g++-4.1.  
	  Ready to merge to trunk.  


	* HACKT-00-01-04-main-00-78-05-prsim-01-14:
	  Implemented random timing in prsim -- preliminary.  
	  Branch is nearly ready for alpha-testing.  


2006-04-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-13:
	  Implemented State::signal_handler helper class for managing
		the SIGINT interupt handler.  
	  Preliminary benchmarks show hackt's prsim (-O2) faster than 
		the original prsim (-O3) but our work is not done yet.
	  Implemented 'break' family of commands, added test case.  


2006-03-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-12:
	  prsim 'initialize' command does not reset the watch/break point
		state of the nodes of the simulator, or the modes.  
	  Added 'reset' command to initialize and clear modes.  
	  'watch' and 'unwatch' can take arbitrary number of arguments, 
		and just iterates over each one.  
	  Fixed cause node value dumping on instability/interference.  
	  One test case demonstrates potential problem with fanout
		evaluation ordering and diagnostics (inv-05).  


2006-03-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-11:
	  Added option to prsim to search include paths added by -I <path>.
	  prsim State now includes a named_ifstream_manager (new in util/)
		for managing recursively included source scripts.  
	  Added a few test cases that demonstrate this.  


2006-03-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-10:
	  Non-interactive mode of prsim now avoids using readline
		completely, which preserves tab characters in scripts.  
		This is done in CommandRegistry::__source/interpret.
	  Implemented commands: watch, unwatch, watchall, nowatchall, unwatchall
		watchall: doesn't alter nodes' breakpoint flag, just
			uses one State flag to enable printing for all nodes.
		unwatchall: unwatches every node in watch list
		nowatchall: just disables watchall, while allowing explicitly
			watched nodes to still print.  
	  Watching functionality added to step, cycle, advance commands.  


2006-03-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-09:
	  Fixed ExprState::pull_state() inline methods, properly
		accounting for is_not().  
	  'step' command now works as expected, matching with original prsim.
	  Starting to add test cases in test/prsim.


2006-03-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-08:
	  Debugged 'step' command so simulation execution looks reasonable.
	  Implemented 'cycle' and 'time' commands.  
	  EXPR_NAND and EXPR_NOR enumerations betwixt.  
	  More meaningful comments.  
	  TODO: tons of tests, trying to cover every corner of prsim
		execution, every event scenario.  


	* HACKT-00-01-04-main-00-78-05-prsim-01-07:
	  Few minor fixes in prsim, as we slowly test the hell out of it.  
	  Oodles of debugging code added and (temporarily) enabled.
	  'set' command now takes an optional time argument:
		time to set at absolute time, or +time to set relative to now.
		Also improved error messages.  
	  EventPlaceholder sorting criteria reversed,
		lower time => higher priority (duh!)
	  Cleaned code using the pull_state of expressions, 
		using comprehensible pull-enums rather than overloading
		the use of node_type::LOGIC_*


2006-03-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-06:
	  Tests: added preliminary support for prsim tests.  
	  main/prsim.cc: added -b/-i batch-mode/interactive flags.  
		Batch-mode suppresses prompting, default is interactive.  
	  TODO: add interpreter modes, where termination conditions
		depending on error status of command can be set.  


2006-03-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-05:
	  Separated node and expression classes better into structural base
		classes and stateful derived classes.  The structural classes
		will be the core foundation for other tools.  
		The stateful classes (e.g.) can be used for simulators.  
	  In-class enumerations were moved to more appropriate classes.  
	  Bit-field accesses have been fused into method calls for clarity.  


	* HACKT-00-01-04-main-00-78-05-prsim-01-04:
	  Implemented (untested) prsim:step command.
	  Copy-ported much code from prsim's prs.c over to State's 
		member method definitions.  
	  State has more member structures and queues corresponding
		to global information kept in prs.h's struct Prs (and more).  
	  Added more meaningful enumerations and lookup tables.  


2006-03-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-03:
	  Implemented 'what' and 'fanin' commands in prsim.  
	  Broke up parse_node_to_index into reusable subroutines in
		"sim/prsim/Reference.cc"


	* HACKT-00-01-04-main-00-78-05-prsim-01-02:
	  Added -h option to prsim main module for command help,
		with optional objfile, equivalent to "help all" in interpreter.
	  Redefined some command-class macros for "sim/prsim/Command.h".
	  Implemented 'fanout' 'assert' and 'assertn' commands.  
	  Added bunch of utility methods to expr/node/state classes.  


2006-03-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05-prsim-01-01:
	  Branch for resuming prsim development.  
	  Templated EventQueue and EventPlaceholder classes.  
	  Implemented 'set' and 'queue' commands in interface.  
	  EventPool now reserves the 0-indexed (invalid) entry so 
		it should not be touched.
	  NodeState class extends Node with stateful information.
		Ideally, Node should only contain structural information.  
	  Some generally useful short functions added.  
	  State class: added current_time, a few methods for
		event queue changes and printing feedback.  


2006-03-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-05:
	  No source change.
	  Enabled alloc-target object consistency checks in test dirs.


	* HACKT-00-01-04-main-00-78-04:
	  Important: hash_mapped structures are now saved and restored
		persistently with precise order reconstruction within
		each bucket -- the trick was to reverse the buckets
		on write-out so that bucket insertion on reconstruction
		would result in the original ordering.  
		Affected classes: scopespace, entity::footprint.
	  Now, we have enabled perfect object reproduction across
		various compile phases, so haco -> haco-u -> haco-c
		results in the identical object produced by haco -> haco-c.
		Many tests enabled to confirm this behavior.  
	  Next: enabling object consistency checks up through the alloc phase.


2006-03-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-03-merged-nonmeta-02-05:
	  Branch merge of reworking of nonmeta reference classes.  
	  Includes minor bug fix with int type initialization, and
		has enabled instance collection pooled allocation.  


2006-03-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-02-nonmeta-02-05:
	  Committed new nonmeta reference hierarchy, and cleaned up.
	  Status: ready for merge to trunk.  


	* HACKT-00-01-04-main-00-78-02-nonmeta-02-04:
	  Undone NONMETA_TYPE_EQUIVALENCE proposed changes.  


	* HACKT-00-01-04-main-00-78-02-nonmeta-02-03:
	  Fixed strange bug with nonmeta integer type comparison, 
		didn't properly initialize int_instance_tollection's
		type manager, and was getting garbage integer.  
	  Now pooled instance allocations are enabled.


2006-03-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-02-nonmeta-02-02:
	  Marked up code with possible reworkings of nonmeta references:
		1) replacing checking of nonmeta type equivalence,
			but changed my mind back and likely cancelling changes.
		2) new nonmeta reference class hierarchy, analogous
			to the rework with meta reference classes.
	  This revision has implemented 2) and will likely commit.  
	  Next: will commit some revisions, and run more tests, also attempt 
		to switch over to all pooled instance collections.


2006-03-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-02-nonmeta-02-01:
	  Branch: Reworking nonmeta reference infrastructure analogously to
		meta instance references for type checking, etc...
		Initial revision collapses part of the class hierarchy.  
	  Cleanup some obsolete code.  


	* HACKT-00-01-04-main-00-78-02:
	  Configuration update only.  


2006-03-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-01:
	  Added switches to turn on pool-allocation for instance_collections
		and value_collections.  Strange regression with one test case
		with instance_collection pool enabled, so that is left off.  
	  Switched over {pint,pbool,preal)_const to use chunk_map_pool
		for pool allocation (was list_vector_pool) because it is
		more suitable for small object allocation.  
		Unfortunately, bit_mask size is currently limited to 64, 
		but this can be easily extended in integer_traits.  
	  Added expression context parameter to CHP dumps.  
	  Discovered minor type-checking problem with nonmeta references, 
		need to fix shortly.  Already reworked parts of
		nonmeta reference class hierarchy, analogous to earlier
		rework of meta references.  
	  util library: improvements in pool-allocator macros.  


2006-03-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-78-merged-connect-02-09:
	  Major branch merge.
	  Completely reworked unroll/create passes using new union_find
		data structure and algorithms in place of ring_nodes.
		The old implementation was hacked and error-prone, as proven
		several times by the bug reports, whereas the new 
		implementation is clean and provably correct.
		Most regression tests' expected output were updated.
	  Summary: using union-finds to maintain alias information, 
		unroll pass now recursively aliases public ports of
			substructured instances,
		create-pass uses a different traversal (unlike unroll)
			to replay internal port aliases and a second pass
			to allocate unique local instance IDs.
		union-finds are path flattened (compressed) during the 
			ID assignment phase and reflattened if a new
			canonical alias is chosen within the set.  
		Some test-cases involving relaxed actuals were disabled
			because they too need to be reworked correctly.
			We punt that for another day.  


2006-03-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-19-connect-02-09:
	  Maintainence.
		Added hash_map_iterator_O2_bug_test.cc to util/test.
		distcheck-ed with g++-3.3, VPATH built/checked against g++-4.1
	  Status: ready to merge to trunk.


	* HACKT-00-01-04-main-00-77-19-connect-02-08:
	  Cut 2000 LoC of switches, and cleaned "Object/devel_switches.h".
	  No more ring-nodes, and dirty instance ID allocation hacks, 
		just clean, provably correct code for the create-pass.  
	  Status: only cleanup, portability, and packaging checking left
		before branch is merged to trunk.  


	* HACKT-00-01-04-main-00-77-19-connect-02-07:
	  Cut 500 LoC of INSTANCE_POOL_ALLOW_DEALLOCATION_FREELIST hack.


	* HACKT-00-01-04-main-00-77-19-connect-02-06:
	  Finally turned off INSTANCE_POOL_ALLOW_DEALLOCATION_FREELIST hack.
	  Enabled all remaining test cases, updated remaining expect-outputs.
	  Next: Clean-up and excising tons of code marked by switches
		in "Object/devel_switches.h".
	  Status: after several stages of cutting, branch will be ready.  


2006-03-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-19-connect-02-05:
	  Reorganized module::create_dependent_types(), maintainability.  
	  Added instance_alias_info::finalize_canonicalize() for the final
		flattening of the alias-set to point to the canonical alias.
	  port_alias_tracker: shortest_alias now performs union-find
		reflattening after finding the most-favorable canonical alias.
	  alloc-tests updated, except for a few which are really long.  
		Total of 6 test differences remain: 2 unroll, 2 create, 2 alloc
	  Next: disabling old instance_pool-realloc hack!


	* HACKT-00-01-04-main-00-77-19-connect-02-04:
	  Enabled create-pass with this revision, assigning unique local IDs.
		Updated create tests: mostly changes is ID numbers
		and same updates from new unroll pass with union finds.  
		A few tests left un-updated because they are large
		and require more concentration to verify.  
	  Implemeneted instance_alias_info::assign_local_instance_id, 
		the new ID assignment pass, recursive to substructures.  
	  footprint::create_dependent_types():
		removed const-method qualifier.
		In addition to replaying internal aliases and 
		assigning local instance IDs, this now calls 
		evaluate_scope_aliases() and mark_created() before returning.
		Consider privatizing these two methods.  
	  TODO: try simple version of module::create_dependent_types().  
	  TODO: Update port_alias_tracker::__shorted_canonical_alias to
		update the union-find structure, as well as back-reference.  


2006-03-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-19-connect-02-03:
	  Enabled recursive port aliasing, so substructures' nodes are
		also aliases top-down.  
	  Manually hand-checked almost all unroll tests.  
	  Saved connect/031,129 for later because they are too long...
		Will update after create/alloc tests are enabled to 
		aid in re-verification.  
	  Next: create-pass for replaying internal aliases and 
		allocating local instance_id's.  


2006-03-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-19-connect-02-02:
	  Fixed typo buglet in new code (wrong alias assignment operator).
	  Disabled debugging in sources.  
	  Disabled tests: create, alloc, cflat-prsim (everything beyond unroll)
	  Unroll-tests need to be re-verified by hand with new union-find
		structure... a long, arduous task.  Most fail right now, 
		due to these structural differences.  
	  Note from previous log: there a distinction between unrolling
		public ports (for the sake of public aliases) and unrolling
		a complete type's internals.  
	  TODO: New create pass for assigning unique IDs.  


2006-03-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-19-connect-02-01:
	  Preliminary check-in of modifications for reworking connection
		unrolling and footprint creation.  
	  Status: compiles but expected to fail unrolling (all tests), 
		debugging flags also turned on.
	  Parts: replacing ring-node structures with union-finds.  
		Replacing unroll-like pass for allocating instance_id's.
	  TODO: figure out how to fix unrolling, whether or not private 
		subinstances should be unrolled for complete_type unrolling.  
		Issue: complete_type-unrolling needed for replaying
		internal aliases.  


2006-02-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-19:
	  Channels and user-defined data types no longer have relaxed
		template parameters, so they been set to empty in
		their respective traits classes.  
	  Temporary implementation of methods in instance_alias_info_empty,
		leeched off of instance_alias_info_actuals.  
	  Test cases updated with reduced sizes of alias collections.  


	* HACKT-00-01-04-main-00-77-18:
	  Util library update only, implemented union_find template struct.  


2006-02-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-17-merged-maintainence-05:
	  Little source revisions from maintainence branch, mostly
		configure-related reivisions in the util library. 
	  Makefile.am: new configure targets, more flags and 
		configuration information emitted.


2006-02-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-16:
	  No longer printing "with indices { ... }" (empty) in dumps, 
		because instantiation statement index tracking was 
		deprecated from the aggregate-ref branch.  
		Many test cases trivially updated.  
	  Minor header cleanups.  


	* HACKT-00-01-04-main-00-77-15:
	  Documentation update in dox/lang -- for aggregate references.
	  Renamed (file/class) simple_meta_instance_reference_base to
		simple_meta_indexed_reference_base, for clarity.  


	* HACKT-00-01-04-main-00-77-14:
	  Implemented collectible-equivalent type checking for aggregate
		instance references.  
	  Renamed "must_check_type" to "must_be_collectibly_type_equivalent"
		in collection_type_manager and instance-collections.


	* HACKT-00-01-04-main-00-77-13:
	  Forgot to enable aggregate expressions in template arguments.  
	  Trivial mods in grammar and AST/expr.cc.
	  Added some related test cases to parser/template.


2006-02-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-12-merged-aggregate-01-10:
	  Branch merge.
	  Summary: implemented basic aggreegate value/instance references.
		Includes major rework of the reference class hierarchy.
		Some bug fixes and library fixes along the way.
	  Also fixed scripts/promote_header_deps.awk to work properly
		with any VPATH, by stripping away $(srcdir)/$(subdir)
		in output dependencies, also updated Make.hchk-tail.
	  Details below.  
	

	* HACKT-00-01-04-main-00-77-11:
	  Cross-checking against g++-4.1 (RC1, 20060219).
	  Instantiated template classes in the correct namespaces.
	  Minor fixes described in util/ChangeLog.
	  Now ready for 4.1 prime-time!


2006-02-20	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-10:
	  Minor clean-up only.  
	  End of branch, merge to trunk.


	* HACKT-00-01-04-main-00-77-8-aggregate-01-09:
	  Implemented aggregate_meta_instance_reference (.tcc), 
		and instantiated aggregate template classes.  
	  Moved some common functions from simple_meta_instance_reference
		to meta_instance_reference (generic constructions).  
	  Added necessary type_key and util::what specializations.  
	  Trival updates of some test cases, due to string changes.
	  Enabled bunch of basic 1D-array construction test cases (work).
	  Branch status: nearly complete.


	* HACKT-00-01-04-main-00-77-8-aggregate-01-08:
	  Committed deprecation of assign_value_collection from last revision.
	  Renamed param/value_refs unroll_resolve -> unroll_resolve_rvalues.
	  Renamed value_refs' unroll_references -> unroll_lvalue_references.
	  Other similar trivial renaming for clarity.  


2006-02-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-07:
	  Phasing out old meta_value_reference::assign_value_collection, 
		in favor of new method of assigning parameter values
		in expression_assignment::unroll().  
		The new method collects lvalue references in a similar
		fashion to instance_aliases in connections.  
		Cleanner, easier to understand, more efficient.  
	  Implemented value_collection::unroll_references, 
		and meta_value_reference::unroll_references.  
	  Separater out value-instance structs into their own headers.  
	  Fixed array_generic types in pbool/preal_traits.h.


	* HACKT-00-01-04-main-00-77-8-aggregate-01-06:
	  Partially implemented aggregate_value_ref::assign_value_collection, 
		but going to abandon shortly.  *shrug* (reason below)
	  experssion_assignments' value_reference type is now generalized, 
		no longer limiter to simple references.  
	  TODO: re-implement expression assignment to collect packed_array
		of pointers to value instances (state_instance), to facilitate
		en-masse collective value assignment.  
		Ditch meta_value_reference::assign_value_collection.
		Note: this is easier now with 'correct' class/interfaces.  


	* HACKT-00-01-04-main-00-77-8-aggregate-01-05:
	  Repaired latent typo bug (never tripped before) in
		simple_meta_value_reference::assign_value_collection, 
		incorrect loop-termination condition.
		Added bunch of related test cases to parser/param..
	  Implemented most simple methods of aggregate_value_reference. 
	  Trimmed some more useless interface methods in aggregates.  
	  TODO: expression_assignment's value_reference_type (dest) need not
		be simple anymore, allow aggregates.  


2006-02-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-04:
	  Trimmed unnecessary methods from aggregate reference classes.
	  Implemented appending of subreferences with dimension-only checking.
		Packed-size checking is done only at unroll-time.  
	  Added some simple parse test cases to parser/array.  


	* HACKT-00-01-04-main-00-77-8-aggregate-01-03-merged-ref-11:
	  Merge of instance reference rework from child branch, 
		-ref, revision -11.  (Major code surgery.)  


2006-02-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-11:
	  meta_instance_reference_base : persistent (non-virtual)
	  Removed "Object/ref/simple_datatype_meta_instance_reference_base.h".
	  Checked parser tests-cases against yacc, a few updates.  
	  Minor touch-ups.  
	  Status: ready to merge to parent branch.  


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-10:
	  Finally, committed DECOUPLE_INSTANCE_REFERENCE_HIERARCHY -> 1, 
		(-1400 LoC).  This accomplishes the primary branch objective.
	  Only little more clean-up and checking before merging.  


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-09:
	  Committed ENABLE_STATIC_COMPILE_CHECKS -> 0, and
		ENABLE_STATIC_DIMENSION_ANALYSIS -> 0, (-1500 LoC).
		There goes a lot of old commented code...


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-08:
	  Committed WANT_IS_TEMPLATE_DEPENDENT -> 0, (-650 LoC).


2006-02-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-07:
	  Committed SUBTYPE_PORT_CONNECTION -> 1, (-250 LoC).


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-06:
	  Committed WANT_PARAM_INSTANTIATION_STATEMENT_BASE -> 0.  (-100 LoC)


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-05:
	  The axe-man cometh!
	  First of several phases of committing code cuts.  
	  Committed UNIFY_UNROLL_PASS -> 1.  (-250 LoC)


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-04:
	  Tiny patch to improve an error message on formal/actual mismatch.  
	  Repaired last test case, and added one more template/080.hac.
	  With this patch, the source now passes make check and distcheck.


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-03:
	  All remaining test directories updated, after re-verification.
		What a pain in the asterisk.  
	  Remains only one test case, waiting for better diagnostic message.


	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-02:
	  Fixed minor bug in assigning value to member of value collection.  
	  Round of test updates in basic, param, namespace.  
	  Round of source clean-up.  


2006-02-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-02-ref-01:
	  MASSIVE code transplant.  
		Thousands of LoC marked for substitution and deletion.  
		Introduced a handful of switches to mark cuts in
			"Object/devel_switches.h"
		DECOUPLE_INSTANCE_REFERENCE_HIERARCHY -> 1
			pry apart instance/value reference hierarchy.
		SUBTYPE_PORT_CONNECTION -> 1
		WANT_IS_TEMPLATE_DEPENDENT -> 0
			compile-time checking facilities.  
		UNIFY_UNROLL_PASS -> 1 (clean-up)
	  Agenda:
		Strip out much code related to static (compile-time)
			checking of instantiation and initializations.  
			ENABLE_STATIC_COMPILE_CHECKS -> 0
			ENABLE_STATIC_DIMENSION_ANALYSIS -> 0
		For instance, instance/value collections no longer contain
			a sequence of pointers to instantiation statements.  
			They now only contain the first instantiation stmt, 
			for the sake of basic type checking.  
	  Test suite introduced many differences.  
		Before this branch is over, ALL 2500+ tests must 
		be resolved and updated to satisfaction.  
		Tests were NOT updated in this revision.
		That will happen gradually over next revisions.  
	  After all this is done, completing aggregate references should
		be easier and cleaner than was formerly possible.  


2006-02-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-02:
	  First major revision:
		partially implemented AST construction of aggregates.
		updated persistence type keys for aggregates
		skeletal implementation of aggregate value references, 
			instantiated: Object/expr/meta_param_value_reference.cc
		grammar updated to generalize alias_lists (simplification)
			now requires a little bit more checking in AST.  
	  TODO: consider liberating param_value_references from
		the meta_instance_reference_base hierarchy, analogous to
		what was done with physical and value instance collections.  
		

2006-02-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-10:
	  Tweaked sources in a few places so that it could build and
		run correctly when passed CPPFLAGS=-DNDEBUG.
		Removed unused variable warnings, with __ATTRIBUTE_UNUSED__.
	  configure.ac: added checks for compiler __attributes__.


	* HACKT-00-01-04-main-00-77-9:
	  Fixed bug in referencing definition-local parameters, in
		simple_meta_value_reference::unroll_resolve.
	  Added test case: parser/template/079.hac


2006-02-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8-aggregate-01-01:
	  This branch is for implementing the long-awaited aggregate
		references in the HAC language, such as {x, y, z}.
	  Initial revision:
		renamed some persistent type keys for clarity, 
			test outputs of objdumps were updated.  
		renamed some instance_reference classes to value_reference
			for consistency.  
		skeleton files for aggregate reference class templates
		grammar adjusted to accommodate aggregate references, 
			almost no change because difference is semantic.
	  TODO: next, start with parser front-end, and construct
		aggregate instance/value references.  


2006-02-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-8:
	  Fixed bug where reference to formal parameter array was failing
		to unroll-resolve: test case parser/template/076.hac.
	  Fixed loop-termination typo bug in const_collection::make_value_slice,
		also fixed value-copying bug, range-checking bug, 
		all in one fell swoop.  (I must've been drugged when writing
		that routine for the first time.)


2006-02-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-7:
	  Bug fixed: case test/parser/template/074.hac.
		Was rejecting-valid templated type because failed to 
		pass the context including actuals which were needed
		to resolve other formal paramters.  


	* HACKT-00-01-04-main-00-77-6-merged-PRS-06-01:
	  Minor merge of comments and test cases from -PRS-06-01.
		Branch was halted due to lack of response on core issues.
		Finalization of PRS language facilities is punted.  


	* HACKT-00-01-04-main-00-77-5-merged-preal-01-10:
	  Branch merge.  Summary:
		Added preal support to language, complete from front-
			to back-end.
		Extended PRS literals to take up to 2 parameters <sizing>.
		Extended macros and spec-directives to take any number
			of parameter expressions, like "macro<x,y,z>(a,b,c)".
		Significant refactoring of redundant source code.  
		Improved error handling and reporting.  


2006-02-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-4-preal-01-10:
	  Improved macro/directive error handling and reporting in parser
		and middle-end.  Added test cases to show.  
	  Branch is ready for merge to trunk.  


2006-02-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-4-preal-01-09:
	  PRS::pull_base now uses bool_literal (was literal) as output node.  
	  Parameters in literals, macros, and spec directives have been 
		implemented all the way through alloc and cflat back-ends.  
	  Common code betweem PRS::macro_definition_entry and 
		SPEC::spec_directive_entry factored out into 
		Object/lang/directive_definition.{h,cc} (in HAC::entity::)
		Added new interface functions for checking both number
		of parameter and node arguments, and user-definable constraints
		on parameters and nodes.  
	  Added size prs support in cflat module and cflat_options.  
	  Added some preliminary test-cases demonstrating use of 
		parameterized macros, and generating sized PRS.  
	  TODO: actually call the registered check functions.  


	* HACKT-00-01-04-main-00-77-4-preal-01-08:
	  Factored out common code between PRS::macro and SPEC::directive
		into entity::directive_source, in Object/lang/directive_source.
		Common forward declarations now in Object/lang/SPEC_fwd.h
	  Added type-check generation of checked macro/spec parameters.  
	  Added params array to PRS::literal, but not used yet.  
	  TODO: resolved parameter support in PRS::footprint_expr_node.
		Consider using a union bewteen node_array and params.
	  TODO: update macro/spec check interface.


	* HACKT-00-01-04-main-00-77-4-preal-01-07:
	  Cleaned up code for PRS::footprint_macro, 
		and SPEC::footprint_directive, factoring out common (identical)
		code into Object/lang/directive_base.{h,cc}.
	  Added params to footprint_macro and footprint_directive, 
		now persistently stored.  Binary objects grew slightly, 
		only a few test cases adjusted.  
	  TODO: unroll them!
	  TODO: add check_params functionality to the corresponding
		macro/spec registries and definitions.  
	  TODO: add parameters to PRS::literal
	  TODO: more test cases using parameters!


2006-02-08	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-4-preal-01-06:
	  SPEC::directive is now vector<bool_literal> analogous to PRS::macro.


	* HACKT-00-01-04-main-00-77-4-preal-01-05:
	  Reworked entity::PRS::macro to use a vector<bool_literal>
		instead of containing pointers to PRS::literal, for reasons
		of efficiency and simplicity.
		Should to the same with spec directives.  
	  Then add parameters to the IR structures for unrolling.  


	* HACKT-00-01-04-main-00-77-4-preal-01-04:
	  Minor error-reporting fix in AST/instance.cc.
	  Added parser support for parameterized PRS-literals, 
		PRS macros, and spec directives.  
	  TODO: middle-end support for parameters in literals, 
		spec directives and macros.  


2006-02-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-4-preal-01-03:
	  Implemented type-checking and construction of preal expressions.  
		Tons of copy-pasting in Object/expr/operators.cc :S
	  Changed some persistent type hash code to be less (?) confusing
		and more intuitive, which resulted in test outputs changing.  
	  Added some basic test cases.  


2006-02-07	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-4-PRS-06-01:
	  This branch created for sake of closing off some open issues
		with PRS.  Do we allow top-level prs?
	  TODO: some unfinished bug-business in a few test cases in
		test/parser/prs, regarding mixing of loops/conditionals
		with PRS.  Pending resolution of some language details.
	  Will probably have to extend the intermediate presentation
		in Object/lang/PRS*.h to support conditionals.  
	  This initial revision just added some test cases
		and comments in sources.  


2006-02-06	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-4-preal-01-02:
	  "Enabled" preal expressions by instantiating their template classes
		all over the place, akin to pint/pbool.  
	  lexer/hackt-lex.ll: replaced calls to atoi and atof with
		std::istringstream, for safety and portability.  
	  AST/token.cc: removed format string psrintfs in favor of
		more portable stringstream operations in *::string_compare().  
	  TODO: AST type-checking and arithmetic/relational expression
		classes on preal's.
	  TODO: go back and write value_reader/writer functor specializations 
		for p{{bool,int,real}_instance in 
		Object/inst/*_value_collection.cc.
	  TODO: test-cases.  


	* HACKT-00-01-04-main-00-77-4-preal-01-01:
	  Branch for adding support for real-valued parameters.  
	  Initial revision updated the lexer/parser, added the necessary
		token types, and declared the necessary headers
		in Object/expr/preal_*.h and Object/traits/preal_traits.h.
	  A few compile-stderr tests were updated.  


2006-02-05	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77-3:
	  Failed attempt to fix non-critical bugs parser/template/059,063.
		Symptom: failure to register relaxed-template arguments
		to the persistent object manager.  
		Attempt to fix failed because the relaxed template arguments
		are constructed from a temporary canonical_type during
		write_objects.  Registering it on-demand met with disaster.  
	  Some useful modification to global_entries and their
		persistence management for future fixes.  
	  Other than that, this revision accomplished nothing.  


	* HACKT-00-01-04-main-00-77-1:
	  Hack patch to fix bug: parser/connect/129.hac.
		Summary: comprehensive backpatch pass to sweep and overwrite
		instance IDs before collecting scope and port aliases,
		initiated in entity::footprint::evaluate_scope_aliases.  
	  TODO (massive): rewrite connection analysis using union-find
		instead of ring-nodes.  


2006-02-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-77:
	  Maintainence revision only, no source change.  


	* HACKT-00-01-04-main-00-76-9:
	  Fixed and added spec directives as discussed.
	  TODO: document that sh--! "dox/lang/chapters/SPEC.tex"


	* HACKT-00-01-04-main-00-76-8-merged-spec-01-04:
	  Merged -spec-01-04 branch revisions.  
		Initial support for spec language directives.  


2006-02-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-7-spec-01-04:
	  Completed implementation of spec directives, 
		cflat now uses them to emit textual directives, like macros.  
	  Added first batch of spec directives:
		lvs_exclhi/lo, sim_force_exclhi/lo, sim_assert_exclhi/lo.
	  PRS::macro : after is now only enabled for prsim tool.  
	  Added a few test cases to make sure it basically works.  
		Not extensively tested.  
	  Branch is ready to merge.  


2006-02-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-7-spec-01-03:
	  Initial implementation of SPEC::footprint and members for the
		middle-end.  Also implemented SPEC::spec_registry, 
		based on PRS::macro_registry.  
	  Some functional-style code improvements and miscellaneous clean-ups.  
		Introduced visitor_functor in Object/lang/cflat_visitor.cc.
	  PRS::cflat_visitor now visits (unrolled) spec_directives.  
	  Some code refactoring for better re-use, less duplication.  
	  Added spec body (pre-unroll) to process_definition.  
		Object binary grows as a result.  
	  Added spec_footprint to entity::footprint (binary grows).  
	  Unroll and create test outputs have been updated.  


2006-02-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-7-spec-01-02:
	  Initial middle-end support for spec language.  
	  TODO: write spec directive registry.  
	  TODO: add spec body support to (definition) footprints.  
	  TODO: persistence and unrolling.  
	  TODO: basic test-cases.  


2006-02-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-7-spec-01-01:
	  Branch for adding spec { } language support.  
	  Initial revision added front-end support for spec.  


2006-02-01	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-7-merged-PRS-05-01:
	  Merged -PRS-05-01 branch revision.  Implemented rule attributes.


	* HACKT-00-01-04-main-00-76-6-PRS-05-01:
	  Added back-end support for PRS rule attributes.
		First example: after <delay>.
		Due to additional information stored, PRS footprint
		binaries increased in size -- tests updated accordingly.  
	  Added some basic test cases.  


2006-01-31	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-6:
	  Critical bug fixed: parser/flow/loop-ports-07.hac
		Algorithm for determing packedness of implicit subarrays
		was buggy in library util/multikey_assoc.tcc, 
		but now corrected, and replaced with a more efficient, 
		less recursive algorithm.
	  Added a bunch of similar positive and negative test cases.  


2006-01-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-5:
	  Check for range validity before instantiating indices
		inside a instance array (collection).  
		This fixes an assertion failure on invalid code, 
		case: parser/flow/loop-instantiation-01.hac.


	* HACKT-00-01-04-main-00-76-4-merged-fixdump-06:
	  Merge of -fixdump branch fixes.  
		Summary: better control over dump formatting through
		object class hierarchies, definition sequential scope dumps, 
		minor formatting updates.  Tons of test suite updates.  
	  TODO: list of critical bug fixes.  


2006-01-29	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-2-fixdump-06:
	  No source change.  Test suite clean-up only.  
	  End of branch.  Merge to trunk.  


	* HACKT-00-01-04-main-00-76-2-fixdump-05:
	  No source change.
	  Enabled a handful of alloc tests in test suite.  
	  Added a few basic datatype tests.  
	  Discovered persistence BUG in parser/template/059,063.hac!
	  TODO: simplify suffix rules for dump files, eliminate redundant.


	* HACKT-00-01-04-main-00-76-2-fixdump-04:
	  Now propagating expr_dump_context argument through all
		instance_management_base::dump, for better control over dump.
	  Enabled sequential scope dumping for all user-defined definitions.
		Tons of test outputs updated accordingly.  
	  TODO: now can enable create test-cases in remaining test dirs.  


	* HACKT-00-01-04-main-00-76-2-fixdump-03:
	  Minor change to printing references to induction variables, 
		dumps now show them with '$' instead of scope names, 
		which is more meaningful and readable.  
	  Bunch of tests dumps updated accordingly.  
	  TODO: definition-local sequential instance management dumps.  


2006-01-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-2-fixdump-02:
	  Reworked dump method to be more customizable in class hierarchies, 
		particularly in instance collections and namespaces.
	  Fixed longstanding bug with failing to print namespaces of 
		canonical names, in particular for the alloc-dump tests.  
	  Renamed Object/cflat_context to Object/global_entry_context, 
		but also provided alias typedef header.  
	  TODO: for pre-unrolled definitions, add sequential scope dumps.  
	  TODO: enable datatype create/alloc tests, and write more.
	  Then one more revision to go clean-up.  


2006-01-28	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-3-merged-unique-03-02:
	  Merged bug fix from -unique-03 branch (now closed).


2006-01-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-2-unique-03-02:
	  I seem to have fixed the unique ID allocation bug with a blatantly
		hacked backpatch.  I'm very ashamed of this hack.
		I can only live with this, knowing that in a future
		rewrite, it (along with the entire unroll/create procedure)
		will be replaced with a method described in TODO.
		Bug case connect/128.hac defeated.  
	  Hack code is wrapped in #if INSTANCE_POOL_ALLOW_DEALLOCATION_FREELIST
		from "Object/inst/instance_pool.h".


2006-01-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-2-unique-03-01:
	  This branch is for fixing a serious unique creation bug exhibited
		by the reduced testcase in test/parser/connect/128.hac.
	  This initial revision turned on debugging facilities (and should
		not be user directly for checking).  
	  Currently weighing options for fixing the bug, ranging from 
		varies degrees of hacktitude.  


2006-01-27	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-2-fixdump-01:
	  This branch was initiated for the sole purpose of cleaning up 
		the dump routines in the defininition/namespace/instance
		hierarchy once and for all (at least until another major
		rewrite).  Most revisions will revolve around the
		use of the entity::dump_flags structure.  
	  This first revision didn't change any behavior, but added some
		fields to dump_flags in preparation for changes.  


2006-01-26	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76.2:
	  By popular demand, support for user-defined datatype instances
		has been enabled.  Code additions in canonical_types
		(specializations), state_manager, user_def_datatype.
		This has NOT been thoroughly tested yet.  
		NOTE: this resulted in enlargine the binary size for
		data_definition classes by 8B, because of the
		footprint_manager's minimum size.  
		Tons of unroll/create tests have been updated accordingly.  
	  Added skeleton main/chpsim.{h,cc} for getting started.  
	  main/*.h headers inclusion protection macros prepended with __HAC
	  Enumerations in Object/traits/type_tag_enum.h were prefixed
		with TYPE_.  (still may not be clear where they come from.
	  TOOO: test-cases for user-defined datatypes.  
	  TODO: channel instance support.


	* HACKT-00-01-04-main-00-76.1:
	  Grammar addition to allow definition bodies inside datatype
		and channel definitions.  
	  Also added type-restrictions in parser_context::add_instance()
		and some query methods to fundamental_type_reference's
		class hieararchy.  
	  TODO: test-cases.


2006-01-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-76-merged-PRS-04-03:
	  Merge of -PRS-04 branch, which adds cflat support for PRS macros.  


2006-01-25	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-74-PRS-04-03:
	  Added support for passn and passp macros.  
	  Added minimal test cases.  
	  Branch is ready to merge for prime time. 


2006-01-24	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-75.3:
	  Port-style connections fixed (in loop context), by calling
		simpler helper function instead of constructing an
		auxiliary reference.  Bug fixed by removing offending code.  
	  Added new test cases to verify this: parser/flow/loop-ports-*.hac.


	* HACKT-00-01-04-main-00-75.2:
	  *Really* fixes bug with member-reference lookup.
		Modified meta_instance_reference functions to conditionally
		perform lookup to translate local to actual instance 
		collection.  Member references don't need the additional
		lookup, already done by helper function.  


	* HACKT-00-01-04-main-00-75.1:
	  Fixes bug with member instance-reference lookup. 
		Unroll code was inadvertently looking up an already 
		lookup member reference with the base class's static
		helper function.  Refactoring the common code fixed 
		the problem.
	  Lots of debug code sprinkled about.
	  New test cases added (parser/flow) that now work, but didn't before.  


2006-01-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-75:
	  Cumulative minor bug fixes from -00-74.x.


	* HACKT-00-01-04-main-00-74.6:
	  Fixed comment-lexing bug, stupid typo... 
		chalk up another bug found for Clint Kelly.


	* HACKT-00-01-04-main-00-74.5:
	  Improved error message on bad definition reference.
		A few tests updated.


	* HACKT-00-01-04-main-00-74.4:
	  Compilation failures should not result in empty object file, 
		fixed in main/main_funcs.cc: check_file_writeable().


	* HACKT-00-01-04-main-00-74.3:
	  Line-number was off by 1, after multiline C-comment because 
		OPENCOMMENT ate the newline, discovered by Clint Kelly.  Fixed.


	* HACKT-00-01-04-main-00-74.2:
	  Fixed file_manager's cyclic file inclusion false-positive bug, 
		tripped by Clint Kelly, case: lexer/import-015-*.hac
		Added additional line-number info on return path 
		from lexer exceptions.  Updated some test stderr's.  


	* HACKT-00-01-04-main-00-74.1:
	  Useful error message on bad operator in AST's, 
		logical_expr::check_meta_expr().
		Bug tripped by Cilnt Kelly, case: parser/basic/oper-01.hac


2006-01-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-74-PRS-04-02:
	  PRS macros' arguments may not be empty, fixed in grammar.
	  PRS unrecognized macro error message issued.  
	  PRS::macro_definition_entry main prototype updated to take
		vector<local node IDs>.
	  We have our first working macro, "echo"!
	  Added initial test-cases in prs/echo-*.hac.


	* HACKT-00-01-04-main-00-74-PRS-04-01:
	  Significant progress towards implementing user-defined PRS macros.  
	  Wrote PRS::macro (pre-unroll) and 
		PRS::footprint_macro (unroll-resolved) classes.  
		Implemented macro::unroll(), seems to work.  
	  Added macro_pool to PRS::footprint, resulting in larger 
		binaries for process_definitions and definition footprints.  
		(Tests updated accordingly)
	  Preliminary draft: PRS::macro_registry for macro class definitions.  
	  Extended cflat_visitor to cover PRS::footprint_macro.
	  Added primary tool enumeration to cflat_options.  
		This enumeration will be used to determine the
		major mode of operation in cflat.  
	  main/compile module: added more -f flags.  
	  main/main_funcs: added debug flag to save_module_debug.  


2006-01-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-74:
	  Makefile.am: split up libhackt.la, factored out AST objects
		into libhacktast.la.
	  Object/*.{h,tcc}: include protection macro #ifndef ...
		for all headers now prefixed with __HAC for consistency, 
		convention, and to minimize collision.


	* HACKT-00-01-04-main-00-73-merged-prsim-00-34:
	  Branch merge.
	  Initial prsim code: expression allocation and command interface.
	  Initial support for PRS macros and attributes. 
	  This branch also includes important library fixes and improvements.  
	  Significant configurability improvement for portability.  


2006-01-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-34:
	  Just portability and compatibility checks.
	  Ready to merge to main.


	* HACKT-00-01-04-main-00-72-prsim-00-33-merged-PRS-03-02:
	  Merged in sibling branch: -PRS-03-02.
		This early merge was deemed necessary because many essential
		fixes and improvements were only on the prsim branch.
		Most importantly the rewrite of cflat visitation
		is needed to support PRS.  
	  TODO: support Clint's requests for PRS extensions.  
	  Status: prsim incomplete:
		expression allocation complete, but not optimized.
		a good start of the command-line interface.
		PRS extensions:
			Initial syntax and object support for macros
				and attributes only.
			need to support primary tool mode, 
			possibly added to cflat_options.  
			Add macro support in the cflat_visitor hierarchy.
	  PRS activity is planned for after the merge to main trunk, 
		then splitting off to -PRS-04.



2006-01-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-32:
	  Finished and (basic) tested member_meta_instance_reference::
		lookup_globally_allocated_index().  Was easy, the footprint*
		was available from the footprint frame!
	  Reverted -00-28's revisions to unroll_context (cleaned).
	  TODO: write some prsim script tests...
	  Status: need to merge in sibling branch -PRS-03 revisions, 
		this branch now in semi-stable state to do so.  


	* HACKT-00-01-04-main-00-72-prsim-00-31:
	  Clean-up only, from -00-28 revisions on.


	* HACKT-00-01-04-main-00-72-prsim-00-30:
	  Another minor lexer fix: regarding line-numbers of import
		directives in the parse-tree.  A few test-cases updated.  
	  TODO: clean-up #if code in AST/import_root.* and lexer/hackt-lex.ll.


	* HACKT-00-01-04-main-00-72-prsim-00-29:
	  Quick emergency bug-fix (reported by Clint Kelly):
		Lexer was dying on assertion failure with w.r.t.
		registry sizes and stack sizes.  (They need not be correlated.)
		file_position struct was given a string name (path to file)
		field for convenience.  Much cleaner now.  
	  Some minor POSIX-related fixes, and yacc-related (libbogus) fixes.  
	  TODO: line numbers reported are incorrect, fix using new
		test case example.  
	  TODO: back to TODO list from -prsim-00-28.  


2006-01-21	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-28:
	  Currently, prsim instance member lookup is in transition.
	  AST::id_expr::check_meta_reference() calls 
		the base-definition's lookup_nonparameter_member()
		to lookup private subinstances of any type.  
	  entity::definitions: added get_scopespace(), 
		all typedefs forward the request to the scopespace to 
		the canonical type's definition, 
		implemented lookup_nonparameter_member(). 
	  Added scopespace::__lookup_member(): non-virtual lookup of id_map.
	  Tons of restructuring in {simple,member}_meta_instance_reference
		and simple_meta_instance_reference_implementation<> policy:
		factored out common code, added new useful method functions
		for performing lookups of globally allocated information.  
		Renamed old unroll_generic_scalar_reference to
			unroll_scalar_substructure_reference, and
			redefined unroll_generic_scalar_reference
			to return a pointer to the alias' base type.  
	  instance_alias_info<Tag>: instance_index member pushed to
		substructure_parent_type.
	  sim/prsim/Reference.cc: Switched to new incomplete code
		over old incorrect code (that's progress).  
	  TODO: finish writing member_meta_instance_reference::
		lookup_globally_allocated_index, using type footprint.  
	  TODO: clean up Object/ref/*.{h,tcc} files, after we re-wrote
		a bunch of stuff and left obsolete code commented out.  
	  TODO: clean up instance_index switches in instance_alias_info...
	  TODO: no longer need unroll_context::lookup_private_members, 
		revert those revisions.  
	  TODO: merge in -PRS-03 sibling branch, then merge to trunk.  


2006-01-19	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-PRS-03-02:
	  Factored out repetitive code in lang/PRS::pull_* into common base
		class (pull_base) for maintainability.  
	  Added object structure for attributes in pull-up/dn production rules.
		This resulted in larger rule binary objects (4+ B).
		Tests cases' outputs have been updated accordingly.  
	  Implemented most of type-checking of macros and attributes
		expressions and instance-references.  
		Had to add some new check functions to a few AST classes.  
	  Some minor enhancements to util library (util/ChangeLog).


	* HACKT-00-01-04-main-00-72-PRS-03-01:
	  Spawned this concurrent branch for Clint, who's requested some
		extensions to the PRS language.  
	  AST/PRS.{h,cc}: added macro and attribute classes.  
		Check methods are not written yet.  
		Added optional attribute_list to PRS::rule.  
		Added macro class as an alternative PRS::body_item.
	  Grammar updated to add macros and attributes to PRS.
		macro : ID '(' inst-refs... ')'
		attribute : ID '=' expr_list
		attribute_list : '[' attribute ';' ... ']'
	  prs_expr : are now limited to relative (local) instance references
		only, so no ::-prefixed absolute_id's.  
	  TODO: write some check functionality.  


2006-01-18	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-27:
	  Documentation, clarification, and renaming, clean-up, 
		and planning revision only.  
	  Cleaned up #if 0 code from previous revision.  
	  Wrote issues section in template chapter of language spec.  
		Discusses a proposal for how member lookup should work
		w.r.t. template parameters.  
	  renamed member functions "lookup_object_here" to "lookup_member",
		to make it clear what we're intending to do.  
	  TODO: rewrite definition hierarchy's lookup_member function:
		defer real work to scopespace's lookup_member
		by virtualizing a new get_scopespace() mem-fun.
		Typedefs will implement this by forwarding to canonical defs.  
		Remember to omit template_formals.  


	* HACKT-00-01-04-main-00-72-prsim-00-26:
	  Can now "get node" in prsim.  
	  parser::context: added is_publicly_viewable to enable looking
		up of private members, useful for tools that are
		read-only w.r.t. precompiled module.  
		Also added a ctor with const module&, no more need to 
			const_cast<> for read-only modules.  
	  Refactored definition_base::lookup_port_formal_*(...):
		just use one virtual function to get a port_formal_manager*
		if definition-type has one, else default to NULL.
		Results in less repetitive code (do this more often).  
	  This also fixed a bug where template typedefs wouldn't forward
		lookups to their canonical definition scopes.
		Added new test-cases in parser/typedef/.  (018 demos this)
	  Used excl_ptr<FILE, FILE_tag> for the first time in prsim/Reference.cc
	  TODO: known deficiency only looking up public ports
		in prsim:get, will be quick to fix.  
	  TODO: implement definition_base::lookup_instance_member.
	  TODO: clean up little #if 0 mess in Object/def/definition*.{h,cc}.
	  Updated TODO list file.  


	* HACKT-00-01-04-main-00-72-prsim-00-25:
	  Minor patches to make sure package distchecks and everything builds 
		on the other tested platforms
		(actively using ppc-apple-darwin): i386-freebsd-g++-3.4.0, 
		and i686-linux-gnu-g++-3.4.3.


2006-01-17	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-24:
	  No signficant source changes other than accommodating
		MAJOR util library cleanups.
	  See util/ChangeLog for details.


	* HACKT-00-01-04-main-00-72-prsim-00-23:
	  Wrote most of sim/prsim/Reference.cc, including parsing
		and type-checking, just need the final lookup...
	  ... after this brief interruption to dizzy-up the 
		util/memory pointer classes with deallocation policies.  


2006-01-16	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-22:
	  Maintainence revision only, been lacking some distcheck 
		discipline as of last few revisions.  Now distcheck clean.  
	  This revision also features configure-checked compiler flags.


	* HACKT-00-01-04-main-00-72-prsim-00-21:
	  Most of AST/exprs' type-checking member functions have been updated
		to take a *const* parse_context& argument instead of
		a non-const reference.  This move helps guarantee that 
		when we check an instance reference from another module
		using the context, that we don't modify the module.
		To make it easy to identify this patch, these
		trivial modifications are the only ones in this revision.  


	* HACKT-00-01-04-main-00-72-prsim-00-20:
	  Instance-reference parser working, after a Makefile.am fix
		and renaming old lexers' at_eof() to PREFIX_at_eof().  
	  instref_parse: remembered to set reference argument yylval
		before returning an accepted input.  
	  Instated yyerror magic for instref_parse.
		Really need to factor out this boilerplate code in future.
	  TODO: sim/prsim/Reference.cc needs to call AST function
		but after constructing a proper lookup context, 
		from the host module.  


	* HACKT-00-01-04-main-00-72-prsim-00-19:
	  util library readline fix  and configuration enhancements only.  


2006-01-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-18:
	  Added bunch more core commands to prsim, and placeholders for more.
	  Tore my own hair out trying to get multiple-lexers to compile
		and link into libbogus without symbol collision but gave up.  
		Issue: flex-generated source doesn't include user header
		files early enough to be able to #define-rename all 
		relevant yy-symbols.  (generated parsers were OK)
	  Consequence: each lexer-parser pair is now compiled into
		its own convenience library.  
	  NOTE: lexer/instref-lex-options.h looks much different
		from its original hackt counterpart...
	  TODO: much later, resolve this lexer/parser fiasco
		once-and-for-all with REAL tools.  
	  Hacked by good enough for now, not going to waste more time.


2006-01-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-17-merged-temp-04:
	  Branch merge.
	  Summary: instref parser added, parser-generation updates
		to facilitate multiple-parsers, new and improved
		prsim command registration interface.  
		Also some util library enhancements and configuration checks.  


2006-01-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-16-temp-04:
	  Implemented AST-generation for the instref parser.
	  Re-implemented command infrastructure for prsim.  
		Commands are now registered through categories
		and using class-registration interface.  


2006-01-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-16-temp-03:
	  Makefile.am: pulled libhacktparsers.la out from libhackt.la, 
		now linked in separately, to avoid unnecessary duplication.  
		Duplicated rules for the instref-parse parser, 
		using hackt-parse as a template.  
	  Now compiles the instance-reference parser (instref).
		Needed work to avoid symbol collisions between 
		different parsers.
	  Silly modifications to hackt shell.  
	  parser/*-parse-options.h:
		conditionally define YYPARSE_PARAM when NOT in libbogus.
	  parser/*-union.h:
		macros to rename the union lookup functions
		to avoid symbol collisions.  


	* HACKT-00-01-04-main-00-72-prsim-00-16-temp-02:
	  This branch was created in honor of the frequent power outages
		in our office building.  Committed a bunch of local files.
	  Cross checked sources against g++4.  
	  Intend to get command-line parser up.  


2006-01-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-16:
	  Makefile.am reorganization: split-off everything pertaining to
		the util/ directory into util/Makefile.inc (new).  
	  lexer/parser-generation: replaced the lexyacc-prefix.awk
		pipe with a generated #define substitution file
		parser/hackt-prefix.h, created from 
		util/lang/lexyacc/lexyacc-prefix-generator.awk.
		This the first step in simplifying the parser generator
		and mangler toolchain.  


2006-01-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-15:
	  configurability maintainence only.
	  Added more configuration checks to util library, with help of 
		autoconf checks.  
	  Preparing for command-line parser additions, but may require
		another overhaul of lexer/parser build system.  


2006-01-11	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-14:
	  Added basic command-line interpreter support for prsim, 
		only basic commands so far, core functionality yet to come.  
	  New files: sim/prsim/Command.{h,cc}
	  Also util library additions in this revision.  


2006-01-10	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-13:
	  Added dot visualization mode for prsim, will be useful for debugging
		and checking optimizations.  Just add -fdump-dot-struct
		to hackt prsim to produce dot-format (stdout).
	  Beautiful!


	* HACKT-00-01-04-main-00-72-prsim-00-12:
	  More prsim expr-allocation testing:
		Added structural integrity check (State::check_structure).
		Replaced some magic numbers (valid/invalid indices)
			with meaningful enumerations.  See "sim/common.h".
	  Fixed parenthesization bug in ExprAlloc::link_node_to_root_expr.  
	  Added five test cases dumping expression allocation
		in test/parser/prs.
	  TODO: dump graphical (dot) representation of expressions.  


2006-01-09	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-11:
	  Updated output formatting for prsim expression allocation dump.
	  Added test support for expr-allocation dump comparison.  


2006-01-04	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-10:
	  I was bored, so I had a little fun with autoconf.
	  Added misc/ directory for fun.  


2006-01-03	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-09:
	  PRSIM expression allocation partially debugged for a few simple
		test cases.  Debugging code retained.  
	  Fixed convenience library link-ordering.
	  Added prsim module.
	  SIM::PRSIM::Expr,Node have to use vectors of children/fanout
		instead of valarray, because valarray's realloc doesn't
		copy old values.  :(  Consider new library template class?
	  Added main/options_modifier.{h,tcc} -- reusable simple
		getopt options registry, inheritable by modules.  
		(Factored out of cflat module)
	  Added main/simple_options.{h,tcc} -- simple commonly used
		options parsing for simple commands.  
	  TODO: test suite and test cases for expression allocation.  


2006-01-02	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-08:
	  Initial draft of Expr-allocation code, in sim/prsim/ExprAlloc.{h,cc}.
		Code is untested, need to test, of course!
	  Removed some deprecated ctors in cflat_context and derived classes.  
	  Moved entity::PRS enumerations into "Object/lang/PRS_enum.h".


2005-12-30	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-07:
	  Deprecated (and commented-out) the old cflat_prs methods
		and conforming to using a cflat_visitor.  
	  TODO: do the same with cflat_alias instance hierarchy
	  TODO: use cflat_visitor to allocate simulation expression structs.  


2005-12-23	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-06:
	  Completed transforming cflat routines into cflat_prs_printer
		visitor methods.  (Testing passed.)
	  Can now build upon this to perform other traversals.  
	  TODO: phase out unused code for cflat_prs.  


2005-12-22	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-05:
	  Re-organized some Object/lang/PRS* code a little in preparation
		for adding functionality via a visitor for performing
		tree traversal operations.  
	  Moved some utility classes into their own header files.  
	  Added some utility classes in util library (headers).  
	  TODO: factor out bunch of arguments into cflat/print context
		and re-implement cflat with visitor as a demonstration.  


2005-12-15	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-04:
	  More prsim state and structure implementation Expr, Node, 
		State, etc... a lot of comments on things.  
	  TODO: write walkers for all our useful structures, starting with
		PRS rules and expressions.  


2005-12-14	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-03:
	  More sim/prsim classes added.  
	  Factored out some repetitive code using list_vector's as 
		indexable pools into index_pool<vector< > >.
	  Some memory-management classes added to util library.  


2005-12-13	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-prsim-00-02:
	  Drafted sim/prsim/{Node,Expr}.{h,cc} structs based on the old ones.  
	  Makefile.am: added installcheck-local target.


	* HACKT-00-01-04-main-00-72-prsim-00-01:
	  This branch is for the development of the old prsim, 
		with no new fancy features.  Its purpose is to provide
		an example of how to use the general simulation framework.  
	  Updated module class, providing a temporary footprint
		importer class that undoes import upon destruction.  
	  Added a few short READMEs.  
	  Also added help to Makefile.am.  
	  TODO: interface module to simulation framework for 
		allocating prs nodes and expressions.  
	  TODO: define simulation *state* for each simulator (checkpointable).  
	  TODO: flesh out more details of TODO.


2005-12-12	David Fang		<fangism@users.sourceforge.net>

	* HACKT-00-01-04-main-00-72-merged-rename-00-06:
	  Trunk merge: We've moved! Renamed files, eliminating traces of art.  


2005-12-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-71-rename-00-06:
	  Documentation update only.  
	  This branch is now complete save for unintentionally
		forgotten replacements.  


	* ARTXX-00-01-04-main-00-71-rename-00-05:
	  Moved Object/art_object_fwd.h -> Object/object_fwd.h, 
		and all references hitherto.  
	  Miscellaneous comment updates, and file cross-references.  


	* ARTXX-00-01-04-main-00-71-rename-00-04:
	  No source revision, only test cases were renamed to .hac.
		See ../test/ChangeLog.


2005-12-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-71-rename-00-03:
	  Failed attempt to configure-generate headers_deps.make.
		Kept some notes about it.
	  Updated scripts/automake_include.awk to ignore junk.  
	  Restored parallel-make, which was broken since main-00-69,
		by a NOTPARALLEL directive in the Makefile.am.  
		Fixed by commenting out and rewriting a few dependencies.  
		We'll see if any builds break in the near future.  


2005-12-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-71-rename-00-02:
	  Renamed nearly all AST source and header files without
		"art_parser" in the file name.  Had to get this over with.  
	  TODO: documentation, test files, file extensions.


	* ARTXX-00-01-04-main-00-71-rename-00-01:
	  The purpose of this branch is to rename everything 
		from ART to HAC, more importantly, to remove all 
		names and references to "art" or "ART" because of 
		potential name clashes with other packages.  
	  This first revision renamed the ART namespace to HAC.  
	  TODO: AST files, documentation, test files, file extensions.


2005-12-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-71:
	  Header check dependency generation scripts updated.
		No files rooted at / are included in the dep files.  
	  Bunch of util library pointer class additions, 
		see util/ChangeLog.  
	  Starting to play around with readline and editline.  
	  HACKT shell works with/out rl/el, and is capable of 
		running system commands by prefixing with '!'.  
		Just like my favorite editor, vi.  
	  TODO: load this baby with some commands!


2005-12-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-70:
	  No source change, just revision bump. 
	  Some Makefile.am configurability improvements, 
		able to disable header checking.  


2005-11-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-69:
	  Improved configuration for byacc support.
	  This revision has been validated against byaccj-1.1 (Java-extended),
		bison-1.35, 1.875, 2.0.
	  Makefile.am: clean-ups and re-casing parser cases.
	  Added parser/patch_byacc.awk to fix-up the output
		produced by byacc.  
	  Makefile.am: corrected additional generated source dependencies.
		Unparallelized some non-atomic targets.  
	  lexer/purify_flex.awk: minor fix in member substitution.  


	* ARTXX-00-01-04-main-00-68-merged-parser-04-06:
	  Merged -parser-04 branch.
		Featuring re-entrant lexer and parser, and working imports.  
		Supports yacc, bison-1.35 -2.0, flex 2.5.4 -2.5.31.
	  Too tired to summarize the details, read below.


2005-11-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-66-parser-04-06:
	  Finally wrote the recursive lex/parse file importing in
		lexer/hackt-lex.ll, which calls hackt_parse.  
		Has been tested re-entry safe!
		No memory is leaked to tokens as each level of parsing
		unwinds during an error!
	  Added import_root AST object to hold the parse trees of
		nested visited files, which will be traversed
		at check_build time.  
		During error, file name will be printed during stack
		unwinding.  The stack trace of the inner most file
		will follow that of the first inclusion from importing.  
	  Added file_name_stack to parse_context, 
		later, track file names with this in objects.  
	  lexer/purify_flex.awk: factored out common substitutions
		into a few function calls for prototypes and calls, 
		potentially re-usable for future source stream-hacking.
	  Checked against yacc, bison-2.0.
	  Checked against flex-2.5.31! which was rather painful...
		Had to add another handful of entries to 
		lexer/purify_flex.awk and members to struct flex::lexer_state.
	  Branch is near end.  


2005-11-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-66-parser-04-05:
	  So the previous revision's flex hacks were far from complete...
		This revision brings tons more awk hacks to mangle the
		flex-generated scanner into a reentrant scanner.  
		lexer/purify_flex.awk is horrendous-looking now...
		no time to beautify it.  
	  yyparse() prototype extended to take a FILE* 'infile' argument, 
		which is used to construct the lexer state.  
	  awk scripts now generate more comments in hacked output.  
	  yyfreestacks() and yyerror() extended with _lexer_state
		argument for end-of-file diagnostics.  
	  Also cross checked against bison-2.0 so far.  
	  TODO: enable recursive parsing/lexing in import.  
		and re-enable lexer test with importing.  


	* ARTXX-00-01-04-main-00-66-parser-04-04:
	  Added more crazy awk scripts and hackery to make the flex-generated
		scanner re-entrant, which is a lot harder than purifying
		the yacc-parser!!!
	  Introduced "lexer/flex_lexer_state.h" containing
		the struct flex::lexer_state which contains all the stateful
		information used by the flex-generated scanner (non-C++).  
	  lexer/purify_flex.awk: strips out all the global state 
		variable declarations in the lexer, and replaces
		all of the references to these globals with 
		state-object member references.  Holy awk, Batman!
	  parser/purify_flex.awk: plants a declaration of the lexer-state
		local to yyparse().  
	  The parser is now responsible for holding the lexer state
		flex::lexer _lexer_state, and passing it to yylex(...).  
	  So far, this revision only checked flex against yacc, 
		next revision will check/hack bisons as well.  
	  Currently, file importing is disabled, so all 11 import tests
		in the test/lexer directory fail for this revision.
		We will fix and finish the file importing mechanism
		in the next revision(s).  


2005-11-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-66-parser-04-03:
	  New friends added to make yacc-generated parser re-entrant:
		parser/purify_yacc.awk -- moves globals to local
		parser/yygrowstack_yacc_hack.awk -- rewrites the 
			declaration and calls to yygrowstack with
			additional parameters instead of referencing globals.  
	  Next: Having lexer call parser for importing.  
		Anticipate some changes in error output, file stacks
		will be upside-down.  


	* ARTXX-00-01-04-main-00-66-parser-04-02:
	  Modified the yyparse prototypes to take the YYSTYPE& yylval
		as an argument passed by the caller.  
		Verified against yacc, bison-1.35, bison-2.0.  
	  Makefile.am: slightly more elaborate procedure to generate
		.cc parsers.  
	  Bison-generated parser is now pure and re-entrant, while
		yacc's still uses global variables...
	  Next revision will attempt to hack yacc further.  


	* ARTXX-00-01-04-main-00-66-parser-04-01-merged-main-00-67:
	  Started this branch before some fixes on the main line.  
	  This first revision merges the bison-1.35 fixes from -00-67
		and sprinkles a few comments hither and thither.
	  The intent of this branch is to make import work
		(for real this time), at least with bison, 
		which produces re-entrant parser.  Yacc will take some
		more hacking...


2005-11-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-67:
	  Last revision had inadvertently broken support for bison-1.35, 
		this revision addresses those problems, and also
		makes the bison-generated parser pure (re-entrant).
		Re-entrant yacc-parsing will come later...
	  parser/hackt-parse.yy is now configure-generated from
		parser/hackt-parser.yy.in because the %pure-parser directive
		is rejected by traditional yacc.  
	  We now manually override the yylex prototype by defining
		YY_DECL with a YYSTYPE* argument (for &yylval).  
		The inline utility routines in the lexer (.ll)
		now take a YYSTYPE& argument.  
	  Added more preprocessor defines to parser/hackt-parser-options.h
		and lexer/hackt-lex-options.h.  


2005-11-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-66-merged-parser-03-10:
	  Merged in -parser-03 branch, featuring:
	  Tons of configuration improvements.
	  Parser and lexer enhanced with file import capabilities, 
		which just includes files with an implicit #pragma once.
	  Visited files are skipped, cyclic dependencies
		are detected and rejected.  
	  Parser error reporting now include full file stack.  
	  Command-line option to add search paths is -I, just like cpp/gcc.  
	  Includes a few tests of the import feature, but is not considered
		thoroughly tested.  
	  parse_test module synchronized with compile module.
	  Includes minor library improvements.  


2005-11-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-65-parser-03-10:
	  Using consistent file_status enumerations for diagnostics, 
		added util/file_status.h.
	  Wrapped parse_test's command-line parsing around the compile
		module's command-parser.  Now it benefits from all
		of compile's options and their modifiers, 
		namely include paths from this branch.  
	  lexer::file_manager and yyin_manager now detect and reject
		cyclic file references.  Otherwise precompiled headers
		will not work with cycles.  Dependency graph may only
		be directed acylic.  
	  branch status: nearly complete, possibly ready for merge.


	* ARTXX-00-01-04-main-00-65-parser-03-09:
	  Fixed previous bug regarding nested file line numbers.  
	  Fixed bad file name bug by using std::string in file_manager's
		file name stack.  Never use const char*, 
		not even for quick and dirty.  
	  Parser no longer handles file-opening, moved to lexer!
		Rationale: parser would scan tokens after import
		statements, but before actually opening file, 
		so line numbers would be totally off in nested files.  
		(May still be a way to do it in the parser, 
		a brief attempt at embedded actions in the grammar failed.)
	  Lexer is now imbued with ability to change file streams, 
		imitating parsing of an import directive {IMPORT}.
		Learned that yywrap is called *before* EOF is reached
		in string and comment modes/states.  
	  Extended both yacc- and bison- union-type.awk scripts
		to handle cases where there is no type associated with
		a symbol, either because the symbol has no type, 
		or is a placeholder for an embedded action.  


2005-11-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-65-parser-03-08:
	  All errors are now reported with the file stack.  
		All lexer/parser tests updated accordingly (bison/yacc).  
	  KNOWN BUG with line reporting with nested files, working on it...
	  Added mechanism for resetting file_manager in the event of
		a lexer/parser exception for proper cleanup.  
	  lexer/hackt-lex.ll: added missing quote escape sequences.  


	* ARTXX-00-01-04-main-00-65-parser-03-07:
	  lexer::file_position_stack and lexer::file_manager now report 
		whether an included file was ignored because it was already 
		registered (visited).  yyin_manager and parser use this 
		information to determine course of action.  
	  TODO: dump include file stack in the event of an error.  
		In general, make the error reporting more precise.  
	  TODO: -M for make dependencies (possibly other suboptions).  
	  TODO: commit USE_CURRENT_FILE_STACK in AST/art_parser_terminal.h, 
		and commit CURRENT in lexer/hackt-lex.ll.


	* ARTXX-00-01-04-main-00-65-parser-03-06:
	  Only partial functionality of including/importing other files.  
	  Added lexer::yyin_manager helper class for balancing file stack.
	  Implemented more of lexer::file_manager methods.  
	  Updated yywrap in lexer/hackt-lex.ll.
	  Still needs extensive testing (and completion).  
	  Initial compile options and modifiers to compile module.  
	  parser/hackt-parse.yy: partial implementation of 
		opening files, but needs more checking.  


2005-11-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-65-parser-03-05:
	  Makefile.am: clean-up and making some dependencies omre precise.  
	  main/version.cc: more configuration information added:
		build/host and various CXXFLAGS used in compilation.  
	  main/compile.cc: working towards function include path searching, 
		not there yet...


2005-11-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-65-parser-03-04:
	  Configure/Makefile changes only: cxx_version.h, 
		lexer/lex_version.h, and parser/yacc_version.h are now
		generated at configure-time.  


	* ARTXX-00-01-04-main-00-65-parser-03-03:
	  Added more configuration header dependencies in Makefile.am.  
	  Added initial files for managing file inclusion and path
		searching for included files.  (not complete yet)
	  Minor fix in token_quoted_string::what().
	  lexer/hac_lex.*: removed unused off (offset) field.
	  Added import "file"; skeletal support to hackt lexer and parser.  
		Parser error outputs all shifted by one state.  
		Tests have been updated.  
	  TODO: open referenced files using include paths.  


2005-11-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-65-parser-03-02:
	  Added more configuration detection headers for use with 
		main/version.cc.  Now includes CXX, LEX, YACC versions.  
	  Next: lexer file stack, possibly include search paths...
		NOTE: may have to update parser test outputs.  


	* ARTXX-00-01-04-main-00-65-parser-03-01:
	  Parser related activity.  
	  There has been a request for #include feature, so that will
		be one goal for this branch.
	  In this revision:
		renamed all lexer/parser files art++ -> hackt.
	  Minor fix in an awk script to remove hard-coded name.  


2005-11-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-65:
	  No source change, just Makefile adjustment to fix problem where
		test scripts would depend on . being in user's path.  
		Thanks to Arvind Kumar for reporting.  


	* ARTXX-00-01-04-main-00-64-merged-cflat-03-02:
	  Merged major cflat functionality from -cflat-03 branch.  
	  A good time to announce a pre-release.  


2005-11-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-63-cflat-03-02:
	  Added a TON of cflat modes, having reverse-engineered most
		cflat formats from the original program.  
	  Added real command-line parsing to the cflat subprogram:
		now able to pass in a preset mode and apply any number
		of individual flag modifiers for customization.  
	  Implemented wire-mode alias printing in footprint::cflat_aliases
		and part of substructure_alias_base<false>::__cflat_aliases, 
		in which all aliases are accumulated in a cache
		and printed in the end in aggregate form: wire (a,b,c...);
		Made use of alias_string_cache, which from previous branch.  
	  Various cflat modes not rigorously tested, and many old CAST
		features (like attrib, spec,...) not yet supported.  
		Will update as we learn more from testing.  
	  Usage for hackt cflat is pretty verbose.  
	  Ready for production, merge to trunk.  
	  TODO: documentation: tutorial on hackt::cflat, after merge.


2005-11-02	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-63-cflat-03-01:
	  Added hackt subprogram 'version'.  
	  Added placeholder hackt subprogram 'shell'.  
	  TODO: add more cflat modes, namely lvs, connect, etc...


2005-11-02	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-63-merged-cflat-02-05:
	  Merged in bug-fix branch -cflat-02, revision -05.  
	  hackt cflat prsim is ready for prime time!


2005-11-02	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-62-cflat-02-05:
	  Cleaned up obsolete code, committed switches.  
	  Added process cflat prsim tests.  
	  Target met for the branch, closing after verification.  


2005-11-01	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-62-cflat-02-04:
	  BUG FIXED: cases connect/122-127.in
		Completely re-worked cflatting of aliases, with new idea.
	  Obsolete: Object/common/alias_string_set.{h,cc}
		no longer used, so we're trimming the fat.  
	  Deprecated (and switched out) the old cflat_connect methods
		in global_entry and state_manager.
		(renamed old cflat to cflat_prs)
	  New cflat_aliases routines added to footprint and instance 
		hierarchy.  footprint::cflat_aliases() walks every
		instance and subinstance in the hierarchy recursively, 
		using the result of an allocated state_manager to 
		print aliases to canonical names.  
	  Added class_trait: print_cflat_leaf, true only for bools, 
		because cflat tools only deal with bools (nodes).  
	  As a result of new cflat-aliases, some tests were updated, 
		some with trivially reorder aliases, a few with
		added missing aliases from before, oops!
	  TODO: clean house: delete obsoleted and unused code.  
		Remove alias_string_set.*.
		Commit devel_switches.h.  
		Hand-verify and enable parser/process cflat tests. 


2005-10-31	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-62-cflat-02-03:
	  New idea: instead of computing hierarchical cflat alias, 
		just traverse the top-level footprint hierarchically to
		guarantee visiting each bool alias *exactly* once.  DUH!
		TODO: this, next.
	  Attempted to create and use global_entry parent back-references, 
		but failed miserably.  What wasted effort.  
		Just made a small mess of the code.  


2005-10-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-62-cflat-02-02:
	  Introduced alias_string_cache, constructed during cflat
		once per alias set, per footprint.  Not only is this
		a minor optimization, but it will be necessary to rework
		cflat to fix some known bugs, slated for fixing this branch.  
		Currently enabled by compile switch in Object/devel_switches.h.
	  Next: using completely different cflat strategy, considering
		new structure or traversal.  Might need hash_set to uniquify.  


	* ARTXX-00-01-04-main-00-62-cflat-02-01:
	  This branch for fixing a known bug in cflat.  
		Address test cases connect/122-126.in.  
	  No code revision with this tag.
	  Added bunch of alloc and cflat tests in parser/connect dir.  


2005-10-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-62-merged-flow-01-08:
	  Merged -flow-01 branch:
	  Summary: flow control (loops and conditionals) work in
		sequentially unrolled scopes.  


2005-10-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-61-flow-01-08:
	  Added a few lines of (disabled) debug code.
	  Discovered cflat bug in cases flow/031, connect/122-126.
		Missing aliases to private subinstances.
		All other compile phases through alloc are correct, however.  
	  Bunch of test cases added.  
	  Closing this branch early to focus on critical cflat bug.  
		TODO: connect prs tests! to check for correct aliases


2005-10-29	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-61-flow-01-07:
	  First batch of tests and fixes involving conditional scopes.  
	  index_collection (inst_stmt pointer collections)
		have been augmented to include predicate flag, 
		indicating whether or not statement was inside some conditional
		scope.  Consequentially, object binary sizes have grown
		by one byte per instantiation_statement pointer.  
		Tests have been updated accordingly.  
	  parser::context now tracks whether or not context is in 
		conditional scope.  
	  scopespace::add_instance() when checking for static index overlap,
		disregard all predicated instantiations for now.  


2005-10-28	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-61-flow-01-06:
	  Added code for conditional instance management bodies (untested).
	  Implemented missing pbool_expr::unroll_resolve_value methods, 
		how was this missing before and unnoticed?
	  Fixed some minor dump indentation.  
	  TODO: test cases for conditional scopes, nesting, crazy stuff...


2005-10-27	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-61-flow-01-05:
	  No code revision: just new batch of test cases.  


	* ARTXX-00-01-04-main-00-61-flow-01-04:
	  Trivially implemented unroll/create_unique for loop-scopes.
	  Passes basic test cases so far in parser/flow.  
	  TODO: crazy test cases, move loops inside definitions...


2005-10-26	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-61-flow-01-03:
	  Finished loop_instantiation::check_build().
	  Created class context::loop_scope_frame.
	  entity::param_value_collection::may_be_initialized():
		add || is_loop_variable, which counts as initialized.
	  TODO: make flow/000.in test case work.


	* ARTXX-00-01-04-main-00-61-flow-01-02:
	  More cleaning up, using helper classes to balance parser::context
		manipulations, classes context::*_frame.  
	  TODO: finish loop_instantiation::check_build() next.  


	* ARTXX-00-01-04-main-00-61-flow-01-01:
	  Branch for flow control in sequential scopes: 
		loops and conditionals.  
	  Moved PRS::meta_loop_base class into unroll/meta_loop_base.h, 
		for re-use with loop-scopes.  
	  parse_context's current_open definition now managed by
		parser::context::definition_frame<DefType> template
		to automatically balance context frame.  
	  Started parser::loop_instantiation::check_build().
	  Started entity::loop_scope class method definitions.  
	  Eliminated parser::context::master_instance_list member,
		using current_sequential_scope instead (much cleaner!).  
	  TODO: Balance sequential scope with context member class.
	  TODO: clean up recent switches.  
	  NOTE: first test in parser/flow not complete yet, expect 6 failures.  


2005-10-25	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-61-merged-PRS-02-11:
	  Merged PRS-02 branch.  Main feature: rule and expression loops.  


2005-10-25	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-11:
	  Portability and VPATH check only.  Ready to merge to trunk.  


2005-10-24	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-10:
	  Created switch to allow negative ranges (x,y|x>y) to attempt
		to support CAST-style backward ranges.  
		Currently, unresolved how to interpret empty-ranged
		expression loops, as noted in dox/lang spec.  
		This needs to be resolved ASAP.  
	  Added set of test cases catching empty loop bounds.  
	  This concludes this branch.  


2005-10-17	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-09:
	  Implemented AST::PRS::loop::check_rule() for parsing 
		production rule loops.  
	  Implemented type-checking and unrolling, etc. for 
		entity::PRS::rule_loop.  Passes basic test case in nand-07.
	  	TODO: crazy nested loop test cases.  
	  Factored out common loop structures into PRS::meta_loop_base.  
	  In parse_context, loop variable stack balancing done through
		scoped object construction and destruction now.  
	  Fixed util/unique_list.h (never used yet).  


2005-10-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-08:
	  Implemented smart parenthesization for meta and non-meta
		arithmetic expressions, using operator precedence and
		associativity.  (Could also apply to relational exprs...)
	  Added new prs test cases.  
	  Also added is_associative() to util/operators' 
		binary_arithmetic_operation.  


2005-10-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-07:
	  Cleaned up and committed USE_EXPR_DUMP_CONTEXT.


2005-10-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-06:
	  Introduced expr_dump_context for parameter expressions
		and instance references, used to control and format
		expression dumps.  Currently, enabled using the 
		USE_EXPR_DUMP_CONTEXT development switch.  
		This resulted in some changes in expected test outputs
		in the regression suite (for better).  
		TODO: clean-up commit flag (next).  
	  TODO: PRS rule loops -- and that will conclude this branch.


2005-10-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-05:
	  AST::range_list::portorder_check_meta()
		loop termination condition fixed (independent of is_const).
	  Nested prs expression loop test cases added to parser/prs.


	* ARTXX-00-01-04-main-00-60-PRS-02-04:
	  Enabled bunch of new create/alloc test cases in parser/param.
	  In simple_meta_value_reference<>::assign_value_collection():
		one-line bug fix: now call unroll_resolve_dimensions(), duh!


2005-10-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-03:
	  Enabled assigning and persistence of definition local 
		parameter variables.  
	  Added unroll_context parameter to simple_meta_value_reference<>::
		assign_value_collection() to handle definition-local 
		variable assignments, called by expression_assignment<>::unroll.
	  value_array<>::lookup_value added code to catch cases 
		where value array is loop variable or
		definition-local variable.  
	  Committed USE_LOOP_SCOPE and cleaned up "AST/parse_context.cc"
	  In unroll_context::lookup_actual, check that argument is
		loop variable before calling lookup_loop_var.  
	  TODO: enable create tests in parser/param/.  
	  See new entries in TODO.txt.


	* ARTXX-00-01-04-main-00-60-PRS-02-02:
	  Significant development of loops in the front-end.  
	  includes many minor bug fixes (exhibited by testing loops).  
	  id_expr::check_meta_reference()
		calls qualified_id::lookup_instance instead of check_build
		to guarantee proper unqualified lookup to catch loop vars.  
	  AST::qualified_id methods are all non-virtual (no children).
	  Finished AST::PRS::op_loop::check_prs_expr().
	  Added loop_var_stack to parse_context, now used in looking
		up unqualified identifiers.
		(TODO: commit USE_LOOP_SCOPE, clean up parse_context.cc)
	  Now catch errors in PRS::rule_set::unroll().  
	  Implemented static meta_range_expr::make_explicit_range().
	  The way to detect a loop variable is by checking that
		it is not contained by its parent scopespace.  
	  Improved entity::PRS::*::dump to take dump_context arguments,
		but expressions don't use context yet to leverage this.  
		Noted in "Object/ref/instance_reference.cc" dump_briefer.  
	  Factored out PRS::*loop::* code into expr_loop_base::*
		(clean up old code)
	  Hacked in catch for loop variable resolution in
		simple_meta_value_reference<>::unroll_resolve_value, 
		using unroll_context_value_resolver policy.  
	  Implemented unroll_context::lookup_lop_var().
	  unroll_context::get_target_footprint() now looks up chain
		of parent contexts.  
	  TODO: more crazy loop tests, nesting...


2005-10-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-PRS-02-01:
	  Initial groundwork for enabling PRS loop expressions.  
	  TODO: modify parse_context to handle loop scopes.


2005-10-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-60-merged-cflat-01-11:
	  Merged cflat branch to trunk.  
	  Also includes critical library fixes in util/.  


2005-10-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-11:
	  Canonical names are now chosen to be the shortest, in terms of 
		hierarchy depth.  Ties are arbitrarily broken at the moment.  
		Test cases have been updated with newer canonical names.  
	  Branch is ready to commit to trunk.  


	* ARTXX-00-01-04-main-00-59-cflat-01-10:
	  Hierarchical dump of instances and definitions is now binned
		and alphabetized to produce stable dumps, 
		without depending on hashing.  Tons of test-expects updated.


	* ARTXX-00-01-04-main-00-59-cflat-01-09:
	  Fixed printing of instance_references' dump_briefer
		to use dump_hierarchical_name, using dump_flags::no_owner,
		and also implemented as virtual function so 
		member instance references would be printed correctly, 
		not just the leaf-most instance name of hierarchy.  
		(was only exhibited in intermediate-form dumping)
	  Library fix for persistent_object_manager summarized
		in "src/util/ChangeLog", eliminating false positive warning.  
		Also minor clean-up in "ptrs_functional.h"
	  Added a few new test cases.  
	  TODO: sort member dumping of definitions for deterministic ordering.


2005-10-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-08:
	  Critical library fix to "util/ptrs_functional.h",
		details in "src/util/ChangeLog".  (g++-4.0.2-ism)


2005-10-05	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-07:
	  cflat prsim works for first set of trivial test cases.  
	  Augmented test suite Makefiles for cflat prsim testing.  
	  Updated TODO list... arg.
	  Implemented cflat mode (functor-style) registration.  
	  Committed UES_SCOPE_ALIASES and USE_PRS_FOOTPRINT devel-switches. 


	* ARTXX-00-01-04-main-00-59-cflat-01-06:
	  Working cflat prsim with prs, so far...
	  TODO: extensive testing of cflat prsim -- test suite.
		defining other cflat modes. 
	  Implemented production_rule_substructure::cflat_prs().


2005-10-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-05:
	  Preliminary work for unrolling production rules of processes.  
	  Introduced PRS::footprint as tracker for rules and expressions
		within scope of each canonical process type.  
		(Not used by prs-less meta-types)
	  As a result, all footprint grew in size by at least 8B, 
		accounting for PRS::footprint addition.  
		(Object binary size grew for all definitions.)
	  Privatized helper functorns of PRS::prs_expr.  
	  Implemented prs_expr::unroll() and PRS::rule::unroll()
		using new PRS::footprint.  
	  Minor fixes described in util/ChangeLog.  


2005-09-16	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-04:
	  I think cflat prsim (connect only) is working.  Only spot-checked.
		Implemented recursive alias dumper.  
	  Drafted some early cflat options.  
	  TODO: implement some preset modes (prsim, prlint, connect...)


2005-09-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-03:
	  Removed unnecessary ind argument from global_entry::dump_*.
	  Implemeted collection of hierachical aliases with sets of
		strings of aliases per scope.
	  Extended dump_flags, added new static const member.  
	  module::create_unique() now temporarily imports the scopespace
		of all namespace, copying pointers to the top-level 
		footprint's instance_collection_map.  The map ss only needed
		for the sake of evaluating aliases.  Before function returns
		The collection map is cleared, because it cannot be maintained
		persistently, due to various invariants and pointer 
		incompatibility.  
	  Implementers of scopespace::dump_qualified_name now all require
		an additional dump_flags argument for formatting.  
	  All footprints now preserve singletons in their scope_aliases
		list for efficient generation of alias names for cflat.  
		As a result, object binaries have grown a bit in size
		per footprint (complete definition, module).
	  TODO: iterator over aliases and print for cflat connect!


2005-09-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-cflat-01-02:
	  We reuse the port_alias_tracker to track all aliases in 
		a scope for each footprint, which is useful for
		instantaneous alias lookup.  The extra information
		will be used to print cflat connect aliases.  
		Aliases are also collated at the top-level.
		Consequentially, the object binaries grow as a result
		of this new addition.  Tests updated accordingly.  


	* ARTXX-00-01-04-main-00-59-cflat-01-01:
	  This branch is devoted to cflat -connect functionality.  
	  This initial revision set up the method calls and basic interface.  
	  TODO: keep track of all aliases, in addition to port aliases.  


2005-09-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-59-merged-unique-02-15:
	  Branch summary: Implemented 'alloc' pass which creates
		global hierarchical structures for unique instances.  
	  Includes critical bug fix in unrolling.  
	  Reasonably tested -- bunch of test cases added and hand-verified.  
	  This revision will allow the continuation of cflat.  
	  Next branch for cflat connect.  


2005-09-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-15:
	  Some clean-ups as a result of checking other compilers and
		platforms.  
	  Removed util/obsolete headers and tests from distribution, 
		although they remain in CVS.  


	* ARTXX-00-01-04-main-00-58-unique-02-14:
	  Introduced dump_flags structure for customizing hierarchical dumps, 
		will be extremely useful for cflat formatting.  
	  Extended instance alias dump to take a dump_flags argument.
		Re-using dump_hiearchical_name to print the flattened
		canonical_names after unique allocation.  
	  This branch is mature, and ready to merge to trunk.  


	* ARTXX-00-01-04-main-00-58-unique-02-13:
	  No code revision, just more test cases...
	  We interrupt test-case writing to add more information to 
		the global state dump: canonical name field.  
	  TODO: update hackt-alloc-expect.sh test script.  


	* ARTXX-00-01-04-main-00-58-unique-02-12:
	  BUG FIXED: forgot to remove footprint pointer from unroll_context
		in the tail-recursive path of member instance reference
		resolution during unroll phase.  (one-line fix)
	  Added test-cases process/107,109.


2005-09-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-11:
	  No code revision, just added a handful of tests to parser/process/.
	  ... and stopped because critical BUG was discovered in cases:
		process/107,109(reduced)
		Must fix this before proceeding.  


	* ARTXX-00-01-04-main-00-58-unique-02-10:
	  Breaking news!
	  Recursive hierarchical subinstance allocation seems to be working
		for the existing test-cases, but more test cases are needed.  
		TODO: test cases with deep recursion of private subinstances.  
	  Re-ordered global_entry reconstruction ordering because footprint 
		restoration depends on parent_id and local_offset fields.


2005-09-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-09:
	  Merely clean-up of previous revision.  


	* ARTXX-00-01-04-main-00-58-unique-02-08:
	  Fused footprint_frame allocation and assignment together 
		into one method call.  (TODO: clean up conditional)
	  More test cases added for state allocation.  


	* ARTXX-00-01-04-main-00-58-unique-02-07:
	  Have allocated-state persistence working for top-level allocated
		public ports.  Need to do recursive allocation, 
		and persistence throughout deep hierarchy.  
		Footprint pointers are effectively saved and restored
		through use of canonical types.  
	  State printing/dumping enhanced.  
	  First batch of state allocation test cases in parser/process
		are working.  See also test/ChangeLog.
	  TODO: enable deep recursion for private subinstance allocation.  


2005-09-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-06:
	  Factored out allocation into separate compilation phase 'alloc'.  
		Run 'hackt alloc' to allocate unique global state.  
	  Eliminated unused state_manager argument from construct_port_context.
	  Updated sub-program usage messages.  


2005-09-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-05:
	  Have top-level state allocation and frame assignment working, 
		need to enable recursion.  Currently result is visible
		only from the stdout dump of hackt create <unrolled obj>.
	  TODO: enable deep recursion for private subinstance allocation.  
	  TODO: introduce alloc/cflat phase.  


2005-09-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-04:
	  Added port_context class as a helper for passing globally
		allocated ids in a structure down through recursive
		structure instantiations.  
	  Global enrty pool allocator now reserves the 0th entry of each
		type in advance as a NULL placeholder.  
	  Partial implementations of subinstance expansion and 
		footprint_frame assignment.  
	  TODO: guarantee footprint pointer pseudo-persistence
		and reconstructibility.  


2005-09-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-03:
	  Implemented persistence (partial) and dumping of global
		state structures. 
	  Haven't enabled global creation yet.  


2005-09-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58-unique-02-02:
	  Replaced the silly getter template-specialized functors 
		with template base classes in footprint and port_alias_tracker. 


	* ARTXX-00-01-04-main-00-58-unique-02-01:
	  This branch is for creating top-level global unique instances.
	  This revision set up part of the framework for traversing the 
		hierarchy to allocate unique instances in the global
		pool, now managed by the state_manager class.  
		The state_manager resembles a footprint, except that the
		entries are not just placeholders.  
	  Code execution has not changed, because the final allocation
		has not been enabled yet.  


2005-09-05	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-58:
	  Split "Object/inst/instance_collection.tcc" into
		"Object/inst/instance_alias.tcc".
	  Replaced wasteful connection to generic multikey in trace_alias
		using native container key_type directly.  


2005-09-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-57:
	  Organization only, no code revision.  


	* ARTXX-00-01-04-main-00-56-merged-footprint-01-36:
	  Major branch merge (-footprint-01-36), summary:
	  Each complete type now maintains its own footprint (new class), 
		so templated definitions will have multiple footprints, 
		one for each set of parameters with which it is instantiated.
		Footprints are made as each type 'plays' its sequential scope.  
	  Footprints contain the unique-creation information for each
		structured type.  For definitions, they describe 
		(without external context) the uniqueness of the subinstances
		of the internal structure.  The unique instances, however, 
		are merely empty placeholders for actual state, because
		external connections may change the actual footprint.
		Even the top-level module has a footprint.  
		TODO: replay internal subinstance aliases top-down
			in the final state-allocation.  Extend subinstance
			managers to include non-ports.  
	  Introduction of canonical_types for tighter type-control checking.  
		Instance collections now use these instead of 
		derivative of fundamental types, which are established
		upon instantiation.  Relaxed parameters are still
		maintained in each alias's parameters (if applicable).
		Results in far fewer run-time checks.  
	  Creation of dependent types of subinstances (on-demand) before
		super instance types are created.  Type creation is managed 
		through canonical_types and their corresponding footprints.  
	  Efficient internal alias replay mechanism to make implicit
		internal aliases explicit in hierarchy.  
	  includes a few critical bugs fixes in util/ library.


2005-09-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-36:
	  Clean-up phase 2: committed PHYSICAL_PORTS, USE_PORT_ALIAS_TRACKER
		(in footprint), and CREATE_DEPENDENT_TYPES_FIRST.  
		"Object/devel_switches.h" is empty once again.  
	  Enhancements: trace_alias argument const-ified, 
		instance_array::create_dependent_types uses faster 
		call to internal_alias_policy::connect when collection's
		canonical_type is already strict.  
	  Branch is mature, ready to merge to trunk.  


	* ARTXX-00-01-04-main-00-55-footprint-01-35:
	  Clean-up: committed USE_NEW_REPLAY_INTERNAL_ALIAS, 
		obliterated traces of port_alias_signature (removed).
		600+ LOC deleted, good riddance.  
	  More clean-up coming...


	* ARTXX-00-01-04-main-00-55-footprint-01-34:
	  2-for-1 BUGS SLAIN: process/086,099 fixed.  REJOICE!
	  Introduced completely new replay mechanism for replaying
		internal aliases, using just the port_alias_tracker.  
		Currently enabled by USE_NEW_REPLAY_INTERNAL_ALIAS switch.  
	  Completed implementation of port_alias_tracker methods.  
	  Few tests updated because different canonical names were chosen
		by the new algorithm (we don't care yet).  
	  TODO: erase traces of port_alias_signature, now obsolete.
	  TODO: expurgate hundreds of lines of dead (switched off) code, 
		rendered obsolete by new connection replay mechanism.  
	  Status: branch is in good shape! just needs severe cleaning.  


2005-09-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-33:
	  Wrote port_alias_tracker intended as replacement for 
		port_alias_signature.  After evaluating a complete type's
		unique instances (create) the definition analyzes
		the port instance collections for aliases among the ports.  
		Aliases are recorded in the tracker.
	  Each footprint contains a port_alias_tracker, which affects
		the binary object sizes for all footprint.  
		Test dump outcomes have been updated to reflect this.  
	  TODO: replay the instance aliases using the trackers,	
		instead of the broken mechanism currently in place.  
	  Note: 1.5 days of code was abandoned, but saved onto the
		ARTXX-00-01-04-main-00-55-footprint-01-32-broken branch.  


2005-09-01	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-32:
	  Test cases added only, no code revision.  
	  The no-known-critical-bug status didn't last very long.
	  BUG: process/086.in (create: wrong top-level allocation, 
		failure to replay internal connection)
		Check out the port-alias walking code.  
	  BUG: process/099 (fatal) -- mismatch in retrace hierarchy


2005-08-31	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-31:
	  BUG FIXED: process/066.in -- unconditional assertion (failed before)
		weakened to a conditional assertion in
		instance_alias_info<>::inherit_subinstance_state()
		in "Object/inst/instance_collection.tcc".
	  Sprinkled with more debugging code.  
	  Who's you're bug-slaying daddy?
	  TODO: write TONS of test cases before cleaning up code.  
	  Status: no known *critical* bugs in this branch.


	* ARTXX-00-01-04-main-00-55-footprint-01-30:
	  BUG FIXED: process/066d.in -- now port_alias_signature is used
		recursively to replay internal collections.  
		Previous mistake was that was only applying port alias
		signature of leaf-most types, thereby missing connections
		imposed by parent types.  (Now we only use the parents'
		port alias signatures.)  
	  TODO: BUG process/066.in is next on the hit list.  
	  TODO: massive clean-up after bug fix.  


	* ARTXX-00-01-04-main-00-55-footprint-01-29:
	  Victory!!!  (almost) 
		Bottom-up recursion of connecting internal port aliases
		seems to work, even with some crazy cases.  
		Enabled creating of dependent types first.  
	  Added bunch of elementary test cases for replaying internal aliases
		in process/066*.in
	  BUG FIXED: in looking up instance_collection's corresponding
		alias, using the alias's key_type (special case for D = 1!)
		fixed in instance_alias<>::retrace_alias.
	  TODO: massive clean up of debugging code littered
		in "Object/inst/instance_collection.tcc".
	  TODO: write a TON of test cases, start to involve definition-local
		non-port aliases (which should be skipped).  
	  KNOWN BUGS to FIX: process/066 (fatal), 066d (wrong),
		connect/116, 117 (advanced handling of relaxed params)


2005-08-29	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-28:
	  Still working towards bottom-up construction of dependent types.  
		Inserted a pass before creating unique (after unroll)
		to create dependent types bottom-up.  Currently disabled.  
		Much stacktrace debugging needed.  
	  Added class_trait: can_internally_alias, for which it's
		currently only true for process types.  


2005-08-28	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-27:
	  Implemented (untested) routines to retrace aliases in internal 
		(definition-local) contexts in external contexts for the 
		sake of replaying internal aliases externally.  
		see instance_collection<>::replay_internal_alias, 
			retrace_collection, and retrace_alias.  
	  TODO: insert dependent type creation pass before create_unique, 
		this will handle bottom-up creation of substructure types
		and replay their internal port aliases in the 
		external context.  


2005-08-26	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-26:
	  Updated port_formals_manager and subinstance_manager to 
		use physical_instance_collection rather than the 
		more general instance_collection_base.  
		This results in tighter type constraining (good).  
	  Introduced auxiliary class port_alias_signature, 
		constructed from port_formals_manager and footprint.  
		Going to use this to replay aliases up the
		instance hierarchy *before* creation.  


2005-08-25	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-25:
	  Cleaned up all conditional switches from this branch.  
	  TODO: hierarchical import/exporting of aliases per complete type.  


	* ARTXX-00-01-04-main-00-55-footprint-01-24:
	  Bug fix: only check relaxed actuals
	  Enabled definition footprint creation!
		Each complete type now creates (instantiates) its own
		footprint, expanded into placeholder pools.  
	  Tests added and updated.  
	  TODO: hierarchical instance allocation with 
		definition import/export.  


2005-08-24	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-23:
	  Set up type-merge for canonical types prior to
		creating definition footprints.  
	  Implemented definitions' create_complete_type(), 
		with only process_definition's being non-trivial.  
	  TODO: consistency check for propagated relaxed actuals
		against those of an already complete type.
	  Test updates: some connections tests which passed before 
		now fail (progression!) rejecting instantiation of
		objects without complete (strict) type, 
		after merging relaxed actuals (where applicable).  
	  TODO: enable create_definition_footprint in
		"Object/inst/instance_collection.tcc"
	  TODO: write import/export interface for globals state ID
		assignment.  


2005-08-23	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-22:
	  Status: each definition can unroll it's own sequential scope!
		Significant progress shown in this revision.  
	  Implemented meta_expr's is_template_dependent().  
	  Bug fixed: simple_meta_instance_reference_base now checks
		for template dependence when deducing packed-ness
		if referenced instance collections.  
	  Bug fixed: in resolving member instance reference, 
		only use footprint in the lookup for the top-most level
		of the scope, not any of the members.
		(same principle applies to
			simple_member_instance_reference::connect_port)
	  Bunch of new test cases based on existing one, 
		but onw definitions have internal instantiations
		and connections to unroll.  
		Mostly added to parser/process.
	  Minor updates to error messages during unroll.  
	  TODO: bottom-up footprint construction during the create phase, oooo!


	* ARTXX-00-01-04-main-00-55-footprint-01-21:
	  Breakthrough: recursive type unrolling is enabled!
	  We now also dump process-definitions' footprints.  
		No creation (state allocation) is done yet.  
	  From now on, types must be defined before they can be declared
		or instantiated.  But where, then, are prototypes useful?
		Consider revoking this policy until creation time?
		Test *inputs* were updated to give definitions
		empty bodies for the sake of unrolling tests.  
		(Consider compiler flag to switch behaviour.)
	  Unroll context now make full use of footprint pointer
		during recursive type unrolling.  
	  TODO: recursively create-unique footprints!
	  TODO: spawn off more test cases off of existing ones
		with definition-internal connections.  
		Actually put instance stuff in the definitions.  


2005-08-22	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-20:
	  devel-switch: USE_UNROLL_CONTEXT_FOOTPRPINT, currently enabled
		but not yet tested because
		process_definition::unroll_complete_type is not yet enabled.  
		That's next on the TOOD list.  
		Added code to conditionally resolve instance_collection
		depending on whether or not footprint (of unroll_context)
		points to a valid footprint.  If not, then use global
		top-level instance collection, as done in the past.  
	  *_type_reference::make_unroll_context now all private.
	  instance_management_base::unroll_* all take 
		const unroll_context& argument now.  


2005-08-21	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-19:
	  Enabled process_definition (complete type) registration, but
		not unrolling yet.  
	  Tests updated because registered types (empty footprints)
		are all maintained persistently in objects.  
	  Added interface to import scopespace instance collections
		into footprint's instance_collection_map, 
		the local workspace for unrolling and creating placeholders.  
		Had to implement a virtual partial deep copy-constructor
		in instance_collection_base and its ultimate children
		(array and scalars) for physical and parameters.  
	  also list_vector copy-constructor bug fix in util library.
	  Next: enable complete_type (process_definition) unrolling
		and dumping.  


2005-08-20	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-18:
	  Enabled persistence of the footprint manager in process_definition.
		footprint_manager now saves away hashtable of
		shadow-owned instance collections (physical and parameter).
	  Object binary size for process_definition increased by 8B.  
		Unroll and Create tests have been updated accordingly.
	  Eventually commit the USE_FOOTPRINT_MANAGER switch
		in "Object/def/process_definition.h".
	  TODO: modify and use unroll context for instance_reference
		translation.  


	* ARTXX-00-01-04-main-00-55-footprint-01-17:
	  NOTES: important discussion on implementation of definition-scope
		unrolling, pertaining to footprint management.  
	  Added definition interface methods for registering and unrolling
		complete types, called by
		canonical_type::unroll_definition_footprint.
		Everything BUT process_definition's implementation is no-op.  
		process_definition's unroll_complete_type is currently
		disabled until we fix up unroll/footprint management (NOTES).
	  minor: added ICE_NEVER_CALL macro to "common/ICE.*"


2005-08-19	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-16:
	  Valiant attempt to fix bug case parser/connect/120.in, but
		suspended for the time being.  Resolution: the issue is that
		relaxed actuals at leaf nodes of hierarchical instances
		and ports are not being propagated completely.  
		Doing so adds run-time to either the unroll or creation phase, 
		but this check would be necessary for type-correctness.  
		We're punting for now to return to more critical tasks.  
	  Added bunch of future useful methods for recursive actuals
		synchronization to "Object/inst/instance_collection.tcc".


	* ARTXX-00-01-04-main-00-55-footprint-01-15:
	  Hierarchical state placeholder allocation bug fixed.  
	  Case parser/connect/120.in expects to create-fail but doesn't
		new bug to be fixed, related to actuals checking, 
		needs to be done recursively in ports.  
	  Test-case updates: the order of state allocation has been
		shuffled due to the introduction of the upward 
		super-instance traversal prior to self allocation.  
	  TODO: address new bug, aiming to perfect alias actuals
		type checking of relaxed parameters at creation/connect time.
		Then start unrolling footprints of complete types, 
		which was the end-goal of this branch.


	* ARTXX-00-01-04-main-00-55-footprint-01-14:
	  Summary: in the middle of fixing the recent known bug (ICE).
		Setting up upward-recursive super-instance state allocation
		traversal to break the ICE.  Ha ha.  
		New code calling instance_alias_info::create_super_instance
		is currently disabled and pending other revisions.  
		So all current tests still behave as before.  
		old allocate_state has been renamed __allocate_state
		and does NOT have upward recursion, it is intended to be
		called recursively top-down.  The *new* allocate_state
		will conditionally call create_super_instances on aliases
		in the ring.  
	  Make.hchk-tail.am: compile only (-c) don't link -- 
		faster header check.


2005-08-18	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-13:
	  NOTES: added paragraph about when/why one should merge aliases
		rings across the hierarchy, related to relaxed actuals.  
	  Reimplemented connection and compare methods in 
		instance_alias_info (and actuals/empty parents), 
		see checked_connect_port and checked_connect_alias
		static member functions.  
		Blocks of code replaced in alias_connection::unroll and
			simple_meta_instance_reference::connect_port.  
	  Tweaked ICE macros.  
	  TODO: merge null-relaxed actual rings of aliases for alias_connection
		(calls instance_alias_info::checked_connect_alias)
	  TO FIX: discovered bug, in reduced test-case: parser/connect/118.in.
		Solution is in the comments of the input file:
		Prior to creation, follow up the top-most super-instance(s)
		of the referenced alias in the port-hierarchy and create 
		from there, top-down.  
	  TODO: verify actuals being correctly checked during create-unique
		phase.  


2005-08-17	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-12:
	  Cleaned-up obsolete code, updated some comments.  
	  Next: check actuals during hierarchical connections
		and merges.  Write some test cases for it!


	* ARTXX-00-01-04-main-00-55-footprint-01-11:
	  Maintaining new invariant:
		For all aliases types that can have relaxed actuals, 
		we keep an 'all-or-none' policy: either all aliases
		in a ring have equivalent actuals, or all have null.  
		This eliminates the need for having to search rings
		for actuals, and will accelerate relaxed algorithms.  
	  Replaced (static) instance_alias_*::compare_and_update_actuals
		with (member) compare_and_propagate_actuals.
	  Added verbose comments to alias_connection::unroll().  
	  A few tests updated: because as connections are made
		relaxed actuals are propagated.  
	  Next: clean-up and comment.
	  Next-next: check actuals during hierarchical connections
		and merges.  


2005-08-16	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-10:
	  NOTES: long entry about connection checking during
		create-unique phase, concerning relaxed alias actuals.  
	  Amended the hierarchical unique creation process with
		checking of relaxed actuals as connections are determined.  
		One set of valid actuals will propagate contagiously
		during connection.  
	  Implemented symmetric actuals compare-and-update
		between two instance_alias_info's.  
	  Create-dump now prints alias actuals associated with 
		the state placeholder's back-reference alias, this way 
		we know immediately if the type is complete.  
		(small handful of tests updated.)
	  state_instance classes: no longer have state_instance_base
		parent classes because they are JUST placeholders now, 
		i.e. they contain no actual state.  
		Can clean-up the EMPTY_PLACEHOLDER_STATE_INSTANCE
		conditional in "Object/inst/state_instance.h".
	  good_bool return values given to many state-creation methods.  
	  During creation we now propagate (synchronize) actuals between
		aliases in the hierarchy.  However, the omniscience of
		actuals in each ring is not yet guaranteed, which brings us
		to the next task:
	  Next revision: address (NOTES) when alias actuals should be 
		propagated around the alias ring (efficiently?).
		Is there some invariant we should maintain during unroll,
		like all or none (in each ring)?


	* ARTXX-00-01-04-main-00-55-footprint-01-09:
	  Cleaned up USE_MODULE_FOOTPRINT, committed to 1.


	* ARTXX-00-01-04-main-00-55-footprint-01-08:
	  Module now contains a footprint!
		Instead of allocating state in global pools, it now
		registers them in its footprint, 
		which contains instance pools.  
	  Next revision: clean-up conditional USE_MODULE_FOOTPRINT, commit:1.
	  Next-next revisions: expand defined types recursively, 
		as they are needed, definitions will unroll into
		their footprints mapped by the footprint manager.  


2005-08-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-07:
	  Configure-mania!!!
	  Added ton of C++ header tests to configure.ac, and applied them
		to the util library headers.  Most changes in util/.
	  A few insignificant fixes in the rest of the source code, 
		mostly cleaning up unused variables.  
	  Preparing to replace global instance pool with footprint's pool
		in the module class.  


	* ARTXX-00-01-04-main-00-55-footprint-01-06-merged-canonical-07:
	  Merged complete rework of canonical types from -canonical branch.
	  Summary: canonical_types (templated) now use resolved definitions
		and constant parameter lists, instead of relying on
		old fundamental_type_reference derivatives and run-time checks.
	  Object binary format has been updated as a consequence.  


2005-08-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-07:
	  Clean-up phase 2: removed USE_CANONICAL_TYPE conditional.
	  Status: branch is ready to merge to parent.  


	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-06:
	  Clean-up phase 1: removed all conditionals except USE_CANONICAL_TYPE.


	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-05:
	  Pruned type-equivalence functions (switched off to unused).
	  Pushed instance_collection_base::template_formal_equivalent
		to param_value_collection member function.  
	  Updated prototypes of
		instance_collection_base::port_formal_equivalent() and
		formal_size_equivalent() to use const& instead of ptr.
	  Removed fundamental_type_reference must-equivalent methods.  
		Must-equivalence is reserved for resolved canonical_types.  
	  TODO: clean up and commit switches in "Object/devel_switches.h"
		and "Object/type/fundamental_type_reference.h"
	  Status: branch is nearing maturity.  


2005-08-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-04:
	  Migrating old use of make_canonical_fundamental_type_reference
		in favor of new make_canonical_type.  
	  Replaced (switched) non-virtual fundamental_type_reference::
		equivalence functions with pure virtuals, 
		implemented in children classes, each using own
		make_canonical_*_type.  
		(No more virtual make_canonical_fundamental_type_reference)
	  Partially implemented canonical_type<>::unroll_port-instances, 
		to the same extent of completion as before.  
		Implementation uses policy class for pure specialization.  
	  unroll_context::template_args is now template_actuals
		instead of pointer hitherto because new canonical_type's
		make_unroll_context creates a temporary, and thus
		cannot outlive the reference.  
	  Added "common/devel_switches.h" (project-wide) and
		"Object/devel_switches.h" (module-wide) headers
		for convenient development preprocessor switches.  
		(see comments therein for usage.)
		Much code commented out by switches in this rev.  


2005-08-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-03:
	  Not a revision: just a tag for updated tests in the top test/ dir.
		This revision should make check / distcheck successfully again.


2005-08-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-02:
	  Revisions to make code "work" i.e. produces the same 
		test results (information-wise), but the binary
		objects will differ.  This snapshot only checks in the
		code without updating the tests (so we can come back
		and check the diffs conveniently).  
	  Summary:
		Had to specialize the canonical_generic_chan_type
			to accommodate both user-defined and generic 
			channel types.  Later, should really split them off, 
			but not important for now.  
		Redefined const_param_expr_list::dump_range(): argument 
			indices are now half-open instead of inclusive.  
		datatype_instance_collection::establish_collection_type()
			implemented in a switch-case fashion as a 
			temporary workaround.  
		Implemented canonical_definition_load_policy to allow 
			for the built-in-definition-interception hack 
			documented (and condemned) in
			data_type_reference::load_object_base().
			Specialized definition appears in
				"Object/type/canonical_type.cc"
		Fixed the FINISH_ME macro in "common/TODO.h".


	* ARTXX-00-01-04-main-00-55-footprint-01-05-canonical-01:
	  The goal of this branch is to be able to use these new 
		canonical types to trigger postorder recursive footprint 
		generation as each type is unrolled/created.
	  NOTE: This branch snapshot is unstable: it barely compiles
		and is certain to break many tests.  I just had to commit 
		these changes to save away 1000+ LOC, untested.
		Warning: not all new revisions are wrapped in 
		#if USE_CANONICAL_TYPE -- sloppy me.  
	  Summary: implemented (enabled) true canonical type structures, 
		the replacement for generic fundamental types in 
		instance collections.  Most affected are instantiation
		statements, instance collections, and their implementation
		policies.  Added whole new set of canonicalization methods
		to definitions and type-reference classes, redundant for now, 
		intended as a replacement for the existing ones.
	  Renamed fundamental_type_reference::make_canonical_type_reference
		-> make_canonical_fundamental_type_reference
		to distinguish from the new ::make_canonical_type.
	  Classification tags have been given parent_type member typedef.  


2005-08-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-05:
	  Micro commit to synchronize a few added files before
		sub-branching for some heavy renovation.  
		Type canonicalization needs some serious work.  


2005-08-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-04:
	  More preparation for introducing canonical_type as the 
		type parameter for instance_collections.  
	  Striving to give canonical_type same functional interface
		as fundamental_type_reference for ease of transition.


2005-08-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-footprint-01-03:
	  More untested implementation of footprint_manager facilities.  
	  Preparing to add footprint_manager persistence to 
		process_definition.  
	  TODO: as each canonical type is visited during unroll,
		register the entry in the footprint_manager
		of the canonical definition.  


	* ARTXX-00-01-04-main-00-55-footprint-01-02:
	  Made instance_pool class more resuable to footprint class.  
	  More elaboration of footprint class.  
	  Created Object/inst/*_instance.h headers for lightweight use
		in other headers.  
	  Added instance pool chunk sizes to class_traits.  


	* ARTXX-00-01-04-main-00-55-footprint-01-01:
	  This branch is for developing alias and creation footprints
		per complete type, to be used in hierarchical state
		construction.  This first revision is setting up
		some files for upcoming modifications.  
	  Going to use const_param_expr_list as the sorting key for the
		footprint_manager.  We've defined the < operator
		for const_param classes.  


2005-08-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-55-merged-macros-02:
	  Merged branch.


	* ARTXX-00-01-04-main-00-54-macros-02:
	  Added ICE module and macros to the common/ directory.  
	  From now on, use ICE(...) for internal compiler errors
		in this project.  


	* ARTXX-00-01-04-main-00-54-macros-01:
	  This branch is for cleaning up some debugging macros project-wide.
	  The first revision cleaned up STACKTRACE_* (DTOR, PERSISTENT...)
		macros: _PERSISTENT was standardized with 
		util/persistent_object_manager.tcc
		and _DTOR and _CTOR were standardized in "util/stacktrace.h".
		Many source files were cleaned up as a result.  


2005-08-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-54-merged-unique-01-10:
	  Merged -unique-01 branch (-10).
	  Summary: implemented unique state allocation after unrolling.  
	  Includes some fixes in the util library as well.  
	  TODO: cflat


2005-08-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-53-unique-01-10:
	  Fixed bug in port state allocation:
		ports may be aliased to each other, thus we must process
		aliases' state allocation, and then follow up with
		allocation for the remaining unaliasaed ports.
		See comment in instance_alias_info<>::allocate_state().
		Added new test cases to check for correct behavior:
			parser/connect/111,112,113.in
	  Some gcc4 happiness patches in this branch's new files/methods.  
	  Cleaned out USE_INSTANCE_INDEX conditional.  
	  Branch is nearly mature.  


	* ARTXX-00-01-04-main-00-53-unique-01-09:
	  Fixed bug for connect/031b.in: forgot to propagate
		instance_index copyes to aliases during merge_allocate_state.
	  TODO: clean up USE_INSTANCE_INDEX macro (commit)
	  Status: branch is nearly complete, well-tested.
	  TODO: more test cases in connections.  


2005-08-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-53-unique-01-08:
	  Implemented recursive state allocation of instances and aliases.  
		Updated several related method prototypes.  
	  Enabled a bunch of "hackt create" test cases in test suite.  
	  Currently working on fixing bug exhibited by parser/connect/031b.in.  


	* ARTXX-00-01-04-main-00-53-unique-01-07:
	  Bug fixed in util/ring_node.h.
	  Fixed alias iteration in instance_alias_info::allocate.
	  Enabled most test cases that don't require recursive expansion.  
	  TODO: recursive subinstance state creation.  


2005-08-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-53-unique-01-06:
	  Added state manager, whose responsibility is managing 
		the global state pools (static member pools in various
		state_instance classes).
	  Implemented dumping of created state, just prints canonical alias.  
	  Implemented creation state persistence.  
	  Enabled unique state creation! (without recursion)
		So far basic tests look good, but no connections 
		have been tested yet.  
	  Corrected initialization of instance_pool constructor, 
		call set_chunk_size rather than pass to parent ctor.  
		Implemented an allocate that takes a value to assign.  
	  TODO: test cases with alias connections.  


	* ARTXX-00-01-04-main-00-53-unique-01-05:
	  Added Object/inst/instance_pool.{h,tcc}:
		wrapper around util::list_vector for state allocation.  
		Result of ::allocate is an index into the list_vector.
	  Added Object/inst/state_instance.{h,tcc}:
		Template class from which state instances are defined.  
	  Redefined  *_instance classes (in Object/inst/*_instance_collection.h)
		in terms of state_instance template class.  
	  Updated instance_alias_info<>::allocate_state to use
		instance_pool's allocation.  


2005-08-05	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-53-unique-01-04:
	  Update all *_instance classes: no longer derived from persistent
		because they will be managed differently.  
	  instance_alias_info's instance (ref-count) pointer has been 
		replaced with an integer index for indexing into 
		allocation array of state info (pool).  
		Binary object sizes remain the same because 
		sizeof(size_t) == sizeof(pointer).
	  Implemented back-reference saving and restoring for all instances.  
	  TODO: allocate and link instances to state.  
	  TODO: introduce static global list_vector pools for allocation.  
	  TODO: save and restore global state.  


	* ARTXX-00-01-04-main-00-53-unique-01-03:
	  NOTES: discussion on implementation of (instance) state allocation.  
	  Updated bool_instance and int_instance classes (tinkering).
		Prototype implementation of
		instance_alias_info<>::allocate_state().


	* ARTXX-00-01-04-main-00-53-unique-01-02:
	  Added some more utilities to libfangutil for integer types and
		traits.  


	* ARTXX-00-01-04-main-00-53-unique-01-01:
	  This branch is intended for development of unique-creation
		(state allocation).  This first revision just sets up 
		some empty function calls and outlines.  
	  Also improved hackt program registration.  


2005-08-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-53-merged-configtest-03:
	  Merge of -configtest branch.  


2005-08-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-52-configtest-03:
	  The reason for non-POSIX behavior of getopt on linux is because
		(according to the man-page) the default behavior is
		non-POSIX.  To enforce POSIX, the option string should 
		begin with a '+'.


	* ARTXX-00-01-04-main-00-52-configtest-02:
	  Makefile maintainence: factored out header-check functionality.  
	  Added getopt_test test script to TESTS.


2005-07-26	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-52:
	  Makefile.am: dummy.cc to force configure creation of .deps/
		directory for check-headers.  NOTE: make distcheck
		somehow did not catch this mistake.  


2005-07-24	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-51:
	  Replaced multiple executables with single consolidated executable
		"hackt" from which other programs are launched.  
	  Implemented sub-program dispatch system in "main/hackt.h"
		where each program registers itself with the main dispatcher
		through a standard interface.  
	  available commands in this release:
		compile, unroll, objdump, parse_test, and more!
	  Usage notes in README.
	  libart++ renamed to libhackt (convenience library).  


2005-07-23	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-50-merged-maintainence-10:
	  Merged all maintainence revisions.  
		Almost every file has moved, in an attempt to reorganize.  
		Object/ files all pushed into subdirectories, by category.  
	  Major Makefile.am rework.  


	* ARTXX-00-01-04-main-00-49-maintainence-09:
	  Added a few more READMEs.
	  No longer generate "yacc_or_bison.h", the #defines that used
		to be in there have been folded into the configure procedure
		in the generation of "config.h".


2005-07-22	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-49-maintainence-08:
	  Most remaining files in Object/ have been pushed into subdirectories:
		CHP, PRS -> Object/lang/
		object_base, namespace, scopespace, extern_templates, 
			index, util_types -> Object/common/
		const_collection -> Object/expr/
		template_formals_manager, port_formals_manager -> Object/def
		template_actuals_manager -> Object/type
		art_object_module -> module
		art_object_type_hash -> persistent_type_hash
	  TODO: write new front-end for executable dispatch, 
		using double-command format (like cvs).


	* ARTXX-00-01-04-main-00-49-maintainence-07:
	  Pushed Object/ (instantiation statement, instance_management, 
		assignment, connection, unroll_context) all into the
		Object/unroll subdirectory, basically everything that
		has to do with sequentially played statements.  
	  Added bunch of README files in subdirs.  
	  Removed a few obsolete headers and source units.  
	  Minor Makefile.am enhancements.  


	* ARTXX-00-01-04-main-00-49-maintainence-06:
	  Pushed Object/art_object_inst_ref* and _value_reference*
		into Object/ref subdirectory, and also split up 
		some of the base header files.  
	  Some Makefile.am rework, minimizing use of BUILT_SOURCES, 
		but still inevitable for one auto-header file.  


2005-07-21	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-49-maintainence-05:
	  Pushed Object/art_object_instance* into Object/inst/
		(except for instance_management_base, which is sequential.)
	  param_instance_collection -> param_value_collection
	  TODO: sequetial instance management -> Object/unroll, 
		instance/value references.  


	* ARTXX-00-01-04-main-00-49-maintainence-04:
	  Object/art_context.* -> AST/parse_context.*


	* ARTXX-00-01-04-main-00-49-maintainence-03:
	  This revision pushed Object/art_object_type_ref* into
		Object/type/ and split the headers into separate files.  
	  TODO: everything else in the previous TODO.


2005-07-20	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-49-maintainence-02:
	  This revision pushed Object/art_object_definition* into
		Object/def/ and split the headers into one class/file.  
		Actually resulted in smaller binaries, and probably
		sped up compilation.  
	  Also split scopespace class into "Object/art_object_scopespace.h"
	  TODO: type-references, art_context, instance_references, 
		instance_collections, instance_management.  


	* ARTXX-00-01-04-main-00-49-maintainence-02:
	  Major Makefile.am and cvsignore rework, as described in the
		root ChangeLog.  This Makefile.am now makes use of the
		project-wide definitions in Make.global.


2005-07-20	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-49-merged-connect-01-42:
	  Major merge to trunk, summary:
		Implemented unrolling of connections, what was left of
			alias-style and also enabled port-style connections.
		Implemented strict/relaxed template formals/actuals properly, 
			complete with may/must equivalence checking.  
		Implemented proper unroll-time parameter resolution through 
			unroll_context.  
		Implemented alias substructures for instantiating
			ports and subinstance hierarchies.  
		Member instance reference resolution complete.  
		Hierarchical connections through ports and subinstances
			are persistently maintained in the object files.  
		Includes a few critical util library fixes, 
			and a few enhancements (src/util/ChangeLog).
		Reverted back to single-phase unrolling.  
		Some major file re-organization in this series, 
			moving files around into subdirectories, 
			most notably the Object/expr and inst subdirs.  
	  As of this revision, all tests work as expected, 
		with the few known issues documented either in
		the test case or in the NOTES file.  


2005-07-20	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-42:
	  Cleaned up unroll_context::lookup_actual() as promised.  
	  Tested with traditional yacc to update test cases'
		expected outputs where they differ from bison's.  
	  Also cross-checked this revision with FSF gcc-4.0.1.
	  The grand merge coming up...


	* ARTXX-00-01-04-main-00-48-connect-01-41:
	  BUG fixed in expression equivalence checking:
		In simple_meta_value_reference::must_be_equivalent, 
		added case to check against scalar constant, duh!
		(Some debugging code added in the process.)
	  New test cases added: parser/connect/103..110.in
	  Tired of testing... going to clean-up and merge up.  


	* ARTXX-00-01-04-main-00-48-connect-01-40:
	  BUG discovered and fixed with new test cases in parser/connect.
		Was using index from lookup in the wrong context, 
		resulting in nonsense index for formal-to-actual translation.  
		Fixed in unroll_context::lookup_actual, 
		which needs a rewrite for clarity.  
	  Cleaned up some obsolete code.  
	  TODO: more test cases before trunk merge.


2005-07-19	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-39:
	  Port connections implemented, everything works on the first shot!
		Filled in port_connection::unroll_meta_connect().
		Most of the work is done in subinstance_manager::connect_ports,
		which calls meta_instance_reference_base::connect_port, 
		(pure virtual).
	  Enabled all the pending test cases in parser/connect, all work, 
		and have been hand-verified.  
	  Minor: instance reference lists use vector now, with reserve().  
		instance_reference methods now take const unroll_context&.  
	  Branch nearing maturity.  
	  TODO: rigorous test cases, and cleanup.  
	  

	* ARTXX-00-01-04-main-00-48-connect-01-38:
	  Remark: hierarchical alias connections (x.y = w.z)
		are deemed reasonably stable.  
	  Massive code cleaned up from recent revisions.  
	  Updated type_references' unroll_resolve, modeled after the
		process_type_reference's.
	  New monster test case parser/connect/031 verified by hand.  
		(That unblocks the last of the remaining
		member-instance-reference dependent test cases in that dir.)
	  TODO: enable port-connections.  


	* ARTXX-00-01-04-main-00-48-connect-01-37:
	  BUG cases process/064,065 fixed!  (and fixed well)
	  unroll_context: enabled chaining of scopes, just using
		another pointer to its own kind.
		In lookup_actual (*KEY*), automatically lookup
		in higher scopes where local ones fail to find.  
		Properly handles parameter-dependent-parameters
		in the same scope, such as the case with 
		default template argument expressions.  
		Also catches the dangerous self-reference case
		and proceeds properly.  
	  process_type_reference uses context chaining now to resolve types.  
		Everything else should follow (next revision).  
		Committing now to have a coherent snapshot.  
	  Code is a mess with debugging and comments, must clean up next rev.
		Some useless lookup functions must be removed.  
		Everything should go through unroll_context::lookup_actual().
		Removing unroll_context::resolve_meta_value_reference().
	  No outstanding bugs, after clean up, implement port connections.  


2005-07-18	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-36:
	  BUG cases process/061,062,063.in fixed.
	  Added unroll_context argument to all value_collections'
		resolve_value methods (indexed and non-indexed).
	  Updated NOTES with brief minutes of today's meeting.  
	  Added [] operator to const_collection, only returns scalar value.
	  In type_references' unroll_resolve(), favoring call to
		make_unroll_context over making a blank context
		and then applying the template_actuals_transformer.  
		This should clean-up the code some, make it easier to
		hunt down remaining related bugs.  
	  BUG: targeting process/064.in
	  TODO: finish this and enable port connections (trivial)


	* ARTXX-00-01-04-main-00-48-connect-01-35:
	  BUG process/060 fixed, but there is known inconsistency
		between process/data_type_reference's unroll_resolve
		implementations.  (In other words, I think it may be wrong
		and fragile.)  Haven't cause any regressions yet.  
	  Added unroll_context back to all type_references' unroll_resolve
		methods, as their necessity was demonstrated by this
		revision's fixed bug.  
		unroll_context also added to unroll_port, instantiate...
	  TODO: rework passing of formal-actual contexts in clean fashion.
	  BUG: process/061.in known to crash.  


2005-07-17	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-34:
	  BUG process/059.in squashed (simple scalar case only).  
		Added unroll_context argument to value_scalar::lookup_value.
		TODO: propagate change to array references, 
		in const_collection::lookup_value...
	  Some clean-up from previous revision.  
	  TODO: fix process/060.in, etc...
		in instantiation_statement::instantiate_port(), 
		in which type parameters refer to actuals.  


	* ARTXX-00-01-04-main-00-48-connect-01-33:
	  Reworked parameter assignment unrolling, value_reference, 
		and const_collection to re-use existing unrolling
		methods, and eliminate the eye-sore:
		resolve_values_into_flat_list, which pre-dates the
		introduction of const_collection and packed_array_generic.  
		Good riddance!  (still commented out)
	  TODO: address bugs process/059,060.in
		Will probably add context to lookup_value[_collection].  
	  Updated a few test outputs' error messages in test suite.  


	* ARTXX-00-01-04-main-00-48-connect-01-32:
	  BUG fixed re: process/057.in
		in instance_array<>::element_loader::operator():
		insert new element into collection BEFORE load_object_base, 
		to satisfy reconstruction ordering problem.  
	  New BUG: process/059,060.in:
		passing template actuals to ports of instances.  
	  TODO: more rigorous hierarchical connection testing.  


2005-07-16	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-31:
	  Bug fixes in progress.
	  Instrumented code with more stacktracing.  
		BUG FIX: proper copy-constructor for subinstance_manager.
		BUG FIX: fixed bounds check in subinstance_manager::
			lookup_port_instance().
	  instance_collection::instantiate_indices():
		Create empty first, then manually instantiate (recursive).
	  Added a few new test cases to process/ and connect/.
	  TODO: address bug exhibited by process/057.in


2005-07-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-30:
	  Implemented (untested) member instance reference unrolling.  
		Much if it is currently wrapped in #if ENABLE_MEMBER_UNROLLING.
		Commit after further testing.  
		Factored out common code in instance_reference and 
		member_instance_reference method definitions.
		Also added simple_meta_instance_reference_implementation<bool>
		policy class.  
	  Added Object/ref directory, the future home of all 
		instance- and value-reference classes and code.  
	  Implemented definition_base (and kids)::lookup_port_formal_position.
	  TODO: tons of testing...


2005-07-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-29-merged-subinstance-09:
	  Merged revisions from -subinstance (-09) branch.
		Summary: implemented recursive instantiation of
		subinstance, public ports of structured types, 
		adding substructure to select instance alias types.  
		Implemented more type-checking for channels, 
		and checking between connections and collections.  
		Also include one critical bug fix in the util library.
		Includes notes about some resolutions.
		Files moved around for re-organization.  
	  TODO: back to the original goal:
		member instance reference resolution and connection, and ports.  

2005-07-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-09:
	  Implemented a bunch of missing channel-type reference methods:
		resolve, canonicalize, equivalence.  (It's about time!)
	  Upgraded inst-stmt (channel) to use the default generic
		type-ref parent template, which means it may accommodate
		relaxed template actuals.  Channel instantiation statements
		grew in object size by 1 pointer (4B).
		Only tests in the test/parser/chp dir were affected and updated.
	  New basic channel instance and connection tests in:
		test/parser/channel/0{18,19,20,21,22,23,24}.in
	  More consistent error reporting in type-reference checking, 
		using fundamental_type_reference::type_mismatch_error();
	  Added workarounds for built-in channel-type equivalence
		comparisons to each (4) equivalence method
		(of fundamental_type_reference)
	  End of branch -- beam me up!


	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-08:
	  Demonstrated working hierarchical port instantiation.
	  Added dump_hierarchical_name to instance_collection_base
		and substructure_alias as a means of printing
		the hierarchical alias name, such as x[y].z.
	  Added scopespace::dump_qualified_name(ostream&) for convenience.  
	  instance_alias<>::dump_alias now calls dump_hierarchical_name
		instead of get_qualified_name.
		No existing tests were affected, since we hadn't tested
		hierarchy until now.  
	  Implemented substructure pretty-printing.  
	  This branch is nearing maturity.
	  TODO: test cases, test cases, test cases.  
		One new test case added for demo: test/parser/process/054.in


	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-07:
	  Critical library bug fixed in multikey_generic, 
		described in src/util/ChangeLog.


2005-07-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-06:
	  All type-references' unroll_resolve methods no longer
		have unroll_context as an argument; the contexts
		(translation from formal to actual) are all locally
		created w.r.t. the definitions.  
	  Fixed bug where I forgot to canonicalize typedefs before
		committing types to instance collections.  
		Example test case is test/parser/typedef/012.
	  TODO: enable recursive port instantiation.  


	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-05:
	  Added mechanism for recursively creating port instances
		in the public hierarchy, though not enabled or tested.  
		Too lazy to spill the details here.  
	  Updated bunch of unroll_context prototypes to take
		const unroll_context&.
	  Handy utility methods added hither and thither.
	  Code really needs 1) facelift, 2) bath.


2005-07-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-04:
	  Fixed: squashed the known bug mentioned in previous revision.  
		This was done by changing get_relaxed_actuals 
		(in connect's unroll) to new find_relaxed_actuals(), 
		implemented in "Object/art_object_instance_alias_actuals.tcc".
	  Append minutes of 2005-07-12 meeting to NOTES.  


2005-07-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-03:
	  Instance aliases with substructure now visit, write, and load (empty)
		subinstance list.  This results in a change in object
		binary sizes for recursive instances.  
		Unroll tests updated accordingly.  
	  TODO: fix KNOWN BUG from test case test/parser/connect/097.in.


	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-02:
	  Added subinstance classes to Object/inst.  
	  Every instance_collection(_base) now has a back-pointer to 
		parent super instance (not yet used).  It will be the 
		super instances' responsiblity to restore the back-links
		during persistent object restoration.  
	  Added new static const bool field to class_traits:
		has_substructure: used to determine whether or not
		alias contains substructure information.  
		instance_alias_info derives from a base with or without
		substructure information.  


2005-07-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-28-subinstance-01:
	  Child branch for the purpose of developing subinstance and
		substructure management.  
	  This initial revision just moved and renamed some files for
		reorganization, namely, all class_traits files, 
		have been moved into the Object/traits directory. 
		Object/art_built_ins.cc -> Object/traits/class_traits_types.cc.
	  Makefile.am: enabled and modified the clean-header-deps target
		to not remove, but just reset the auto-dependency files.  
		Now it's usable for maintainence.  


2005-07-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-28:
	  Obsoleted "Object/art_built_ins.h" everything moved into their
		respective traits classes (class_traits<>).
		Initializations are still done in "Object/art_built_ins.cc".
	  Source files cleaned up some, removing obsolete code.
	  Removed obsolete expr headers from repository (to Attic).
	  Upcoming branch: developing instance alias hierarchy.


	* ARTXX-00-01-04-main-00-48-connect-01-27:
	  New directory Object/inst for gradual migration of instance-related
		classes to find a new home.  
	  Replaced collection_type_manager classes (specialized in
		various Object/art_object_instance*.cc) with 
		collection_type_manager parent class templates in Object/inst:
		{general,int,null,parameterless}_collection_type_manager.{h,tcc}
	  Moved bool_type_ptr into bool_traits (class_traits<bool_tag>)
		policy class as a static const member, but is still
		initialized in Object/art_built_ins.cc.
		(Consider moving definition too.)
	  Minor Makefile.am clean-up.  
	  TODO: connect sub-instances to (parent) super-instances, 
		i.e. recursive instantiation, perhaps in instace_alias_info.  


2005-07-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-26:
	  Breakthrough (it's about friggin' time).
	  Proper type checking in place for checking instance alias 
		connections!  Modifications in alias_connection<>::unroll().
	  Implemented instance_alias_info_actuals::compare_and_update_actuals().
	  Implemented instance_collection::must_match_type() through
		the collection_type_manager<Tag>.
	  Some initial test cases to test/parser/connect (088-091).


2005-07-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-25:
	  const_collection<>::unroll_resolve_value() (and friends):
		used to never allowed call, but now allowed under the
		precondition that it is scalar, 0-dimensional.  
	  instantiation_statement<>::unroll():
		Reworked type-unrolling, completion, and commit:
		The call to unroll_resolve_type no longer combines
		the instance relaxed actuals into the result type.  
		The relaxed actuals are checked separately before
		passing them into instantiate_indices_with_actuals().  
		This is cleaner.  
	  scopespace::add_instance(): (semantic clarification)
		Instance additions to the same collection must now have
		the same strictness, i.e. both strict, or both relaxed.
	  fundamental_type_reference::must_be_collectibly_type_equivalent():
		Now prints descriptive error upon type mismatch.
	  process_type_reference::make_canonical_type_reference():
		removed assertion that template_args.is_constant(), just false.
	  Object/expr/operators.cc:
		all ::unroll_resolve methods changed evaluation of
		operands, can no longer assert pint/pbool_const, 
		because resolve may return (scalar) const_collections.  
		Rewritten to account for this.  
	  Some unroll test updates, based on above revisions, also added
		a bunch of new test cases for template types with
		relaxed parameters.  
	  TODO: a little more type/collection checking before moving on.


2005-07-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-24:
	  Tested basic facilities for registering relaxed template
		actuals with instance aliases.  Added dumping of 
		alias's actuals when the parent collection has only
		relaxed type.  
		Fixed minor problem with missing actuals: collection pass
		for persistence was missing from instance_array::collect
	  Some debugging hooks to instance_alias_info_actuals added.  
	  Minor test updates.  
	  Previous TODOs have been flushed, but more extensive testing 
		is required.  


	* ARTXX-00-01-04-main-00-48-connect-01-23:
	  No source changes, only the test directory's artobjunroll
		test format was changed for the sake of simplifying
		and reducing the differences when objects change size.  


	* ARTXX-00-01-04-main-00-48-connect-01-22:
	  Done: added relaxed actuals to instance_alias_info, as dictated by 
		class_traits<Tag>::instance_alias_relaxed_actuals_type.
		instance_alias_info<> derived from this to take advantage
		of EBCO for the classes that don't actually have actuals.  
	  TODO -> PUNT: type-completion statements in the AST
	  Nearly EVERY unroll test expect updated to reflect change
		in size of alias collections, one pointer (4B) per
		sparse member in the collection.  


2005-07-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-21:
	  Small but important revision!
	  In instantiation_statement<>::unroll(), 
		replaced plain call to collection_type::instantiate_indices
		with policy-defined call that passes in pointer to
		relaxed actuals list (instantiate_indices_with_actuals).  
		This is specialized for parameter value collections, 
		that don't need actuals (also future plan for built-ins).
	  In instance_array<>::instantiate_indices(), 
		added relaxed actuals argument used to attach to 
		the referenced instance_alias(info).
	  The TODOs from the previous revision still apply.  


	* ARTXX-00-01-04-main-00-48-connect-01-20:
	  We now allow scalar instance declarations to have relaxed
		types for the sake of being able to alias them
		to other instances.  Unrolling will not catch it
		as error until the creation phase, where creation
		requires relaxed actuals (where relaxed formals exist).  
	  Done: instance_array::check_build().
		Checked that instance_collections acquire the
		type specified by the original declaration.  
		If the first declaration was relaxed, then the collection
		remains relaxed, if the first declaration was strict...
	  Resolved: port declarations will not have late-relaxed arguments.
		Declare their types either strict or relaxed up-front.  
		Thus, context::add_port_formal() remains as is.  
	  instantiation_statement::unroll():
		Temporary workaround to detect the first instantation
		for the referenced collection.  The first time will
		use the original type to establish the collection's type.
		Subsequent instantiations that call commit_type will
		only check collectibility without modifying the 
		collection's type.  (Assertions in place.)
		To instantiation_statement_type_ref_base<Tag>:
			added commit_type_first_time(), and
			get_resolved_type() (also to specializations
			in "Object/art_object_inst_stmt_*.h")
	  Some test outcomes were updated per the above changes.  
	  TODO: propagate the below TODOs through each subsequent revision
		of this branch until they disappear.  
	  TODO: implement type-completion statements (already in AST/grammar)
		in "AST/art_parser_instance.cc".  These statements
		allow one to 'attach' relaxed template actuals to
		instance-references, provided that they are already
		instantiated.  
	  TODO: store relaxed actuals in instance_alias_info classes.  
	  TODO: (not important) rename instantiation_statement
		functions to describe what they do more accurately.  


	* ARTXX-00-01-04-main-00-48-connect-01-19:
	  Now actually storing instance-time relaxed template actuals
		with the individual instantiation statements.  
		parser::context::add_instance() was updated to accommodate
		relaxed arguments in instantiation_statement creation.  
		make_instantation_statement and company were updated justly.  
	  template_actuals::relaxed_args was modified to always
		be const (param_expr_list*).
	  Temporary working of instantiation_statement_type_ref_default
		to handle fusing of relaxed template arguments.  
		Have the others (_data, _channel) model after this.  
		See its unroll_type_reference() for reference.  
	  No longer validating relaxed actuals list in
		template_formals_manager::must_validate... because
		the actuals are allowed to be incomplete, i.e. missing
		the relaxed actuals.  (Don't fill them in auto.)
	  TODO: propagate the below TODOs through each subsequent revision
		of this branch until they disappear.  
	  TODO: fix instance_array::check_build (has bogus argument now)
	  TODO: front-end type check needs to handle scalar and array
		declarations differently w.r.t. relaxed actuals. 
		Revisions to instance_base::check_build and
		instance_array::check_build need to propagate to port_formals.  
	  TODO: fix bogus argument "FIX_ME_NOW" in 
		parser::context::add_port_formal(), copy from add_instance.


2005-07-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-18:
	  built-in channel-types, must now be composed of strict
		data types, so we may deduce that their composition
		is also strict.  Haven't decided about user-defined 
		channel types yet.  Special case is made for 
		built-in channel types in
		fundamental_type_reference::is_strict().
	  instance_base::check_build() now checks strict-relaxed 
		appropriateness of the current fundamental type
		against the optional relaxed template arguments.  
		TODO: add bunch of test-cases for this.  
		TODO: distinguish between scalar and array declarations.  
	  template_formals_manager::certify_template_arguments():
		Treats relaxed actuals differently, does NOT
		automatically fill in default relaxed actuals, 
		only check against them.  
	  Grammar: relaxed template actual lists now mandate expressions
		in every position, because relaxed template formals
		are not allowed to have default values.  
	  Uses new (pure virtual) param_expr_list::
		certifty_template_arguments_without_defaults() const.
	  Print ICE message in const_param_expr_list::certify...
	  Updated some test cases to reflect the above changes.  


	* ARTXX-00-01-04-main-00-48-connect-01-17:
	  Added relaxed template arguments in instantiation statements
		for the AST, also added field to instantiation statement
		type reference base classes (all except params).
		TODO: later, subclass data type instantiation statments, 
			so int, bool, and enum don't need relaxed 
			arguments (pointer to list).  
	  paresr/art++-parse.yy: now store instead of discard
		optional instance relaxed template actuals.  
	  Enabled limited checking of argument collision, but
		TODO: alter check_template_args to not require complete
			strict type (with relaxed actuals) unless 
			declaration is scalar?
	  Nearly every objunroll test's stderr updated to reflect
		increase in size of instantiation statement objects.  
		Increased by 4B (size of pointer index). 


2005-07-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-16:
	  Replaced expression/index/range object lists with vector
		implementations, also leveraging util::reserve
		for up-front space allocation.  Everything "just works".
	  Few more test cases added to test/parser/template/.  
		Added note that 057, 058 are KNOWN BUGS to address
		at a future time (as described in NOTES).  
	  TODO: next, check proper declarations with relaxed template
		actuals in the context of arrays.  


2005-07-05	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-15:
	  Semantics: forbid the use of relaxed template formal parameters
		(in definition context) in strict template arguments, 
		and in array sizes and references.  
		(Later: also forbidden in loops and conditionals)
		They are only allowed in other relaxed template arguments.  
	  Added tests test/parser/template/05{1,2,3,4}.in to catch 
		when relaxed parameters are misused.  
	  Implemented expressions' is_relaxed_formal_dependent()
		to check for relaxed formal dependence.  
	  See important NOTES entry 2005-07-05 about complication with
		checking dependence on relaxed formals that have been 
		passed to other parameters through assignments.  
		Next few revisions may addres that address this issue
		at the cost of adding tracking bits to every
		constant parameter value.  (or we may punt)


	* ARTXX-00-01-04-main-00-48-connect-01-14:
	  Grammar: forbid default template formals in relaxed parameter lists.  
		Few tests (artc-stderr) updated to reflect change.  
	  Useful error messages added when template formals/actuals 
		certification fails.  
	  Ported final unroll type-check from process to data type references.  
	  More test cases (042-049) added regarding relaxed parameters in
		test/parser/template.  


2005-07-05	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-13:
	  Completed major reorganization of expression Object sources.
	  Object/art_object_data_expr.cc -> Object/expr/data_expr.cc
	  Object/art_object_expr_types.h -> Object/expr/types.h
	  Object/art_object_expr.cc -> Object/expr/[everything-else].cc (9)
	  Object/art_object_*expr*.h have been deprecated,
		giving a preprocessor error if you attempt to use it.  
		We will keep it until the end of branch for reference, 
		then discard on the main trunk.  
	  ALL affected source files (and headers) have been updated to 
		include the minimum expr headers as replacements for the
		old headers.  This will also speed up compile time, 
		as there is less to proprocess and parse.  
	  Clean-up is done, now back to real work...


2005-07-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-12:
	  That's it, I've had it with the monstrosity of 
		"Object/art_object_*expr*"... it's time we give it the axe.
		Sliced and diced the header files into ONE class per file
		in the Object/expr subdirectory.  
		We need this to speed up rebuilds, my patience grows thin...
	  Not over yet: next revision will phase out these old headers
		and also splice "Object/art_object_expr.cc".


2005-07-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-11:
	  Unroll-time template formal vs. actual checking in final types.  
		So far applied to process-type-references, but
		can be copied to the other types.  
	  REVERTED back to single-phase unrolling for top-level
		module::unroll().  (single line change)
	  Renamed old "type_check_actual_param_expr" to "may_..."
		and added a "must_..." version for const_params only.  
	  Implemented const_param_expr_list::must_validate_template_arguments().
	  Completed template_formals_manager::must_validate_actuals().
	  Moved instance_collection_base::check_expression_dimensions to
		param_instance_collection::may_check_expression_dimensions,
		and added analogous must_check_expression_dimensions
		for const_params only.  
	  Implemented value_collection<>::must_type_check_actual_param_expr().
	  New test cases added:
		notably parser/template/039.in checks for unroll-time
		type resolution checking (process).
		and parser/template/041.in will exhibit different
		result between 1-pass and 3-pass module::unroll().  


2005-07-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-10:
	  TONS of functional addition, upgrades, and fixes in this revision.  
	  process_type_reference::unroll_resolve():
		invoke the template_actuals_transformer (unroll_context)
		on template actuals before unroll-resolving.  
		TODO: validate the created type.  
	  simplified unroll_context::resolve_meta_value_reference.
	  Added (non-persistent) value cache to const_collection, 
		currently unused, but will come in handy later.  
		TODO: should be mutable.  
	  Implemented meta_value_reference::unroll_resolve_dimensions().
	  meta_value_reference::unroll_resolve() now properly
		handles normal and template-dependent actuals, 
		better error reporting in case of bad dimensions, 
		try-catch around const_range_list::resolve_sizes(), 
		fixed bug in loop termination condition of do-while.  
	  entity::const_collection<>::make_value_slice()
		creates const_collection with slice of values
		specified by the indices.
	  entity::const_range[_list]: now catches error
		when range is invalid, for now throws an exception
		for error handling, but may rewrite later.  
	  {pbool,pint}_instance operator == updated to allow comparison
		between "uninstantiated" values.  If both are uninstantiated, 
		consider them equal, so default values are equal.  
	  template_formals_manager::resolve_template_actual updated
		to recursively resolve parameter-dependent parameters.  
	  const_collection iterator uses: replaced assignments w/ construction
	  Makefile.am: added .ii suffix rule for -save-temps debugging.
	  TODO: template_formals_manager::must_validate_actuals()
	  More critical fixes and improvements in the util/ library, 
		see src/util/ChangeLog for details.  
	  Several new tests to validate this revision added to
		test/parser/template, and more coming...


2005-07-01	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-09:
	  NOTES: resolved many outstanding issues about CHP language
		semantics and type constraints.  (not related to this branch)
	  Moved body of template_formals_manager::check_template_arguments()
		into (virtual) methods of param_expr_list.
		Also enabled checking and processing of relaxed template
			arguments.  
		Implemented, and no tests broke.  


	* ARTXX-00-01-04-main-00-48-connect-01-08:
	  Clean-up revision.  
		Removed obsolete (some still-born) code in definition
		and type-reference source files.  


2005-06-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-07-merged-actuals-08:
	  Merged in revisions from actuals (-08) child branch.  
	  Summary: implemented strict and relaxed template actuals.  
	  However, rest of code base needs to make use of it
		during instantiation and connection.  


2005-06-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-08:
	  Final branch revision before merging to parent.  
	  Some comments updated, mostly regarding done TODOs, 
		and doxygen comments.  
	  Branch summary: properly implemented strict and relaxed 
		template actuals.  

	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-07:
	  Implemented template formal to actual reference resolution
		in template_formals_manager::resolve_template_actual
		and unroll_context::resolve_meta_value_reference.  
		The latter is called by unroll_resolve in
		"Object/art_object_value_reference.tcc".  
	  Reformatted pretty-print dumps of definitions and typedefs.  
		(Updated tests)
	  Enabled object unroll tests in test/parser/template, 
		and they all work, whoa.  
	  entity:: expression lists implemented with vector (replaced list)
		and added indexing operators.  
	  Slightly better control of explicit template instantiation 
		using "Object/art_object_extern_template.{h,cc}".
		NOTE: sequence of including the header file matters.
	  Branch nearing maturity.  


2005-06-29	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-06:
	  Clean-up revision: committed USE_NEW_TEMPLATE_ACTUALS(1)
		and removed conditional wrappings.  
	  Few more things TODO (already noted) before this branch matures.  


2005-06-28	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-05:
	  Massive and revolutionary revision (-1000, +2000 LOC).
	  Summary: enabled proper implementation of template actuals
		in type-references, and applied them to ... everything.  
	  Code differences are wrapped in the condition macro
		USE_NEW_TEMPLATE_ACTUALS, defined in 
		"Object/art_object_template_formals_manager.h"
	  All fundamental_type_references now replaced the old 
		template_params param_expr_list with a proper
		template_actuals, which basically contains two
		pointers to param expr lists (strict, relaxed).  
	  Parser/grammar: updated to include strict and relaxed template
		arguments at declaration time, and optional relaxed template
		arguments at instantiation time. 
		(AST::parser::template_argument_list_pair)
	  Semantic type-equivalence: refined and (partially) implemented
		{strict, relaxed} x {may, must} equivalence checking.  
		Strict checking is employed for connections and 
		non-meta assignments.  Relaxed checking is used for
		array/sparse collection member checking.  
	  Partially implemented definition_base::make_canonical_type_reference,
		and fundamental_type_reference::make_canonical_type_reference, 
		which in combination, creates canonical types by substituting
		template actual parameters into the base definition
		using transformed template actuals.  
	  Parser: PINT_TYPE and PBOOL_TYPE now return token param types
		that act as *complete* types (concrete_type_ref) instead of 
		just a plain type_base (representing base definition).
		Greatly simplifies type-generation of params.  
		(Slight shift in class hierarchies.)
	  Actually added members and methods to entity::unroll_context:
		TODO: make use of formals/actuals mapping in 
		meta parameter substitution for type canonicalization.  
	  More TODO notes in "Object/art_object_value_reference.tcc".
	  TODO: make sure grammar file semantic actions actually make 
		use of relaxed template arguments (see instance_id_item)
	  Nearly EVERY artobj unroll test updated to reflect the 
		size change of type-reference objects.  
	  Minor aesthetics, using construction-style (not assignment)
		for iterator initializations in several source files.  
	  parser::concrete_type_ref class definition relocated to
		"AST/art_parser_type_base.h"
	  Next (few) revisions: cleanup and commit conditional patched code.  


2005-06-26	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-04:
	  Cleaned up COUNT_TEMPLATE_ARGS dependence (committed as if = 1)
		as promised.
	  TODO: Resume enabling template_actuals use.  


	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-03:
	  Replaced excl_ptr<param_expr_list> with count_ptr<...>, 
		affecting the expr, definition, type_ref Object modules.  
		(also template_formals_manager, and AST/art_parser_base.cc")
	  Also took the time to replace iterator initializations
		with copy-constructors in "Object/art_object_expr.cc".
	  Code is transiently a mess with conditionals all over, 
		dependent on COUNT_TEPMLATE_ARGS in 
		"Object/art_object_definnition_base.h".  
	  Next micro-revision will be a clean up.  


	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-02:
	  Got sidetracked in this revision:
		Figured out how to automatically generate unique identifiers
		using cpp, after discovering macro tricks on the web.  
		See corresponding "src/util/ChangeLog" entry for details.
	  Currently USE_NEW_TEMPLATE_ACTUALS is disabled in
		"Object/art_object_type_ref_base.h".  This revision did
		partially fill-in-the-blanks w.r.t. the 'template_actuals'
		class.  Needs more massaging before will compile.  
	  Outlined: new type-checking primitives, two flavors:
		relaxed (collectible), and strict (connectible) equivalence.
	  TODO: replace excl_ptr<param_expr_list> with count_ptr<...>
		This will enable us to switch between old-wrong and
		new template-actuals implementation for the duration
		of this branch.  


2005-06-25	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-06-actuals-01:
	  Once and for all, we're going to do template actuals the CORRECT
		way, using strict and relaxed template arguments.  
		This has been waiting in the wings for the last several
		months... now its time has come.  
	  Rise my young apprentice... and henceforth shalt thou be known
		as... Darth Template.  
	  Once this branch matures, we will use it properly unroll 
		complete definitions (types) and keep per-definition
		repositories of substructure maps.  
	  Added (disabled) "Object/art_object_template_actuals.{h,cc}".


	* ARTXX-00-01-04-main-00-48-connect-01-06:
	  Minor cosmetic re-organization of files in preparation for 
		some more drastic revisions.  Chopped up 
		"Object/art_object_classification_details.h" into 
		pieces named "Object/art_object_*_traits.h".
		Modularity will speed up recompilations.  
		Headers updated to include their appropriate traits.  
	  Added "Object/art_object_inst_stmt_type_ref_default.h" 
		for convenience.


	* ARTXX-00-01-04-main-00-48-connect-01-05:
	  In unrolling call-graph, now favoring returning error status
		instead of throwing exception upon error.  
	  Updated some comments.
	  Updated some tests (unroll test stderr expect).


2005-06-24	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-04:
	  Micro-patch:
	  In a miraculous turn of events, switching to 3-phase unrolling
		didn't break a single test in the testsuite.  
		I am either THAT good, or that bad at writing stress tests.  
	  module::unroll_module currently set to 3-phase unroll,
		effective at least for the remainder of this branch.
	  Should do: devise test cases where the behavior is different, 
		some accept-invalid or reject-valid cases.  


	* ARTXX-00-01-04-main-00-48-connect-01-03:
	  Fleshed out 3 phases of unrolling, re-using old unified-unroll code.
		Implemented unroll_meta_instantiate and unroll_meta_connect.  
	  Try: replacing unified unroll with 3-phase unroll to see what
		test cases differ.  
	  Tentatively gave old unroll method good_bool return value. 
		TODO: try eliminating THROW_EXIT statements.  
	  Phase out generic "unroll", if possible.  
	  

	* ARTXX-00-01-04-main-00-48-connect-01-02:
	  Planned a 3-pass approach to unrolling (updated NOTES):
		1) meta param instantiation and evaluation
			::unroll_meta_evaluate()
		2) physical instantiation
			::unroll_meta_instantiate()
		3) physical connection
			::unroll_meta_connect()
	  Renamed param_instantiation_statement to 
		param_instantiation_base.
	  New template param_instantiation_statement to override
		instantiation_statement, and implement unroll_meta_evaluate.
	  Updated instantiation_statement template class to make methods
		available to children, and updated this_type
		to follow the class_traits policy.  
	  NEXT: Implement 3-phases of unrolling.  


2005-06-23	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48-connect-01-01:
	  This branch has the ultimate goal of implementing port connections
		and member connections, but much has to happen first.  
	  See NOTES file on prerequisite features.  
	  First few revisions of this branch will be for planning
		the high level changes necessary.  
	  Sub-branches of this will concentrate on implementing one dependent
		feature at a time.  
	  Deep breaths...


2005-06-22	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-48:
	  Grammar: generic_type_ref can take an optional direction [!?]
		non-terminal after optional_template_actuals
		to account for directionality of user-defined channel types.  
	  AST classes updated to accommodate this update.  
		generic_type_ref::check_type properly checks for
		channel type (dynamic_cast) before applying direction.  
	  entity::definition_base::make_fundamental_type_reference's return
		type is now (non-const) count_ptr<fundamental_type_reference>.
	  Fixed channel_type_reference::dump to print directionality.  
	  Few new test cases that use user-defined channel-type in ports
		added to parser/test/connect, but not unroll-checked yet.  
	  TODO: next branch port connection, and all prerequisites... oi...


	* ARTXX-00-01-04-main-00-47:
	  Added CHP bodies to user-defined-datatype (set, get), 
		even though I don't know what these do yet.
	  Added port-formals and data-type-reference base to 
		user_def_datatype.  
	  As a result, the fake built-in definition for int and bool
		are bigger by 16 bytes.  Nearly every unrollstderr
		test output was updated to reflect this change.  
	  Split off "Object/art_object_definition_data.h" from
		"Object/art_object_definition.h".
	  Parser now checks and handles datatype's CHP, similarly to
		channel definitions.  
		

2005-06-21	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-46:
	  Added send/recv CHP bodies to user-defined channel definitions.  
	  parser::user_chan_type_def's bodies down-typed to CHP::body.
	  Some code clean-up.
	  Few simple test cases to demonstrate channel CHP bodies.  


2005-06-21	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-45-merged-anal-04:
	  Merged in branch revisions for anal-retentitiveness, 
		turning on max warnings, warnings-to-errors.  
	  Code was cleaned up, no non-standardness remains.  
	  Life is good.  


	* ARTXX-00-01-04-main-00-44-anal-04:
	  Cross-checked clean, warning-free code across a few platforms
		and gcc versions.  
	  Ready to merge to trunk.  


	* ARTXX-00-01-04-main-00-44-anal-03:
	  Instated possibly THE MOST anal retentive compiler warning policy
		known to man.  If you don't know what the following warning
		flags mean, I suggest learning.  
	  In Makefile.am:
		GENERAL_WARN_FLAGS = -W -Wall -Wundef -Wshadow -Wno-unused
			-Wpointer-arith -Wcast-qual -Wcast-align
			-Wconversion -Werror
		WARN_CFLAGS = -Wmissing-prototypes -Wstrict-prototypes
			-Wbad-function-cast -Wnested-externs
		WARN_CXXFLAGS = -Wold-style-cast -Woverloaded-virtual
		The only files that need exceptions are the yacc/lex-generated
			parser and lexer files, which are given
		PARSER_NOWARN_FLAGS = -Wno-old-style-cast -Wno-shadow
			as additional flags for preliminary compilation into a 
			separate convenience library, libhacktparsers.la.
		libart++.la links in libhacktparser.la, so libart++.la
			remains all-inclusive.  
	  Rest of source code gets a minor face-lift to conform to 
		the new compiling standard.  Mostly renaming of local
		identifiers to satisfy -Wshadow.
	  Minor entry also in src/util/ChangeLog.


2005-06-20	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-44-anal-02:
	  Now compiling with -pedantic-errors dialect flag.
		(read: total overkill anal retentiveness)
	  Updated a few header/tcc files to use the new scheme of
		suppressing implicit template instantiations.  
	  See "src/util/ChangeLog" for details.
	  Notably: in "Object/art_object_extern_templates.h"
		Replaced non-ISO extern template declarations with
		template definition-suppressing macros.  
	  Dependent files affected: "Object/art_object_instance_collection.tcc"


	* ARTXX-00-01-04-main-00-44-anal-01:
	  Mini-branch dedicated to making life miserable.  
	  The aim of this branch is to enforce the utmost strictness in
		standard conformance and warning cleanliness.  
	  This will only hurt a little.
	  This revision: enforce -pedantic in CFLAGS and CXXFLAGS
		eliminated redundant operator conversion 
			in "util/memory/excl_ptr.h".
		disabled uses of "extern template", a GNU extension.
	  Upcoming:
		Macros in .tcc files to control implicit vs. explicit
		template instantiation by excluding dependent
		template definition .tcc files.  


2005-06-18	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-43-merged-CHP-01-25:
	  Merged summary:
		CHP language support with persistent intermediate objects.  
		Framework for nonmeta language instances, value references, 
			and expressions.  
		Some CHP-related grammar updates.  
	  TODO: documentation... in dox/lang


	* ARTXX-00-01-04-main-00-42-CHP-01-25:
	  After a configuration header patch, this snapshot is gold!
	  Certified for merge to trunk.  


	* ARTXX-00-01-04-main-00-42-CHP-01-24:
	  Code clean-up only.  
	  distcheck passes.  
	  Candidate for trunk merge.  
	  (Multi-platform check pending.)


	* ARTXX-00-01-04-main-00-42-CHP-01-23:
	  parser::CHP: Moved list<guarded_command> functionality into 
		the 'selection' base class.  
	  Implemented parser::CHP::do_until and entity::CHP::do_while_loop
		(yeah, I know: terrible names...)
	  This branch is ready for merging to main-line after a clean-up.  
	  Grammar: chp_do_until builds from *unmatched* deterministic
		guarded command list, because any else clause would
		make it an infinite loop.  
	  Updated hash_keys of bool_logical_expr::op_map
		for AND to "&" and OR to "|" to stick with old-style CHP, 
		until further change.  (Must be consistent with grammar.)


	* ARTXX-00-01-04-main-00-42-CHP-01-22:
	  Reinstated stmt_list as a class from stmt_list_base, 
		and implemented common convenience check_action, 
		that automatically returns single action for list size 1.  
		Added is_concurrent flag to direct whether or not
		action_sequence or concurrent_actions should be constructed
		if size > 1.
	  typedef parser::CHP::guarded_command	parser::CHP::else_clause;
		Note: token_else is allowed to return NULL for guard
			and skip statment allowed to return NULL.  
		These cases are handled appropriately.  
	  Updated some comments in "AST/art_parser_chp.cc".
	  Implemented guarded_command::check_guarded_action().  
	  Implemented wait::check_action().
	  Implemented [non]det_selection::check_action().
	  Updated loop::check_action(), using stmt_list::check_postorder_stmts.
	  Updated entity::CHP::guarded_action::dump(), allowing NULLs.  
	  Grammar (CHP): skip statements may only appear by themselves, 
		i.e. chp_body_or_skip, in place of a stmt_list.  
	  More new test cases, most for guarded statements and selections.  


2005-06-17	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-21:
	  Grammar: isolated CHP expressions from general meta language
		expressions for modularity.  Updated assignments to
		use the traditional ":=" operator.  Re-enabled
		boolean assignment using +/- after transforming away
		a s/r conflict.  (Used to be ++, --)
	  AST::CHP updated assignment classes, now called
		binary_assignment and bool_assignment, no longer using
		generic base classes (parser::assignment and incdec_stmt).  
		TODO: phase-out generics
	  CHP::body::check_build():
		Fixed block partitioning w.r.t. loops, 
			now correctly divides up slices of statements
			based on position(s) of forever-loop statements.  
		Minor enhancement: one-statement actions no longer 
			go into action-sequences.  
	  Implemented statement::check_action for loop, 
		binary_assignment, and bool_assignment.
	  More test cases added to test/parser/chp.


2005-06-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-20:
	  Remembered to set_direction in chan_type::check_type... oops!
	  Implemented parser::CHP::receive::check_action().
	  Implemented inst_ref_expr::check_nonmeta_data_referencee(), 
		and inst_ref_expr_list::postorder_check_nonmeta_data_refs().
	  Implemented entity::CHP::channel_receive::add_references<>().
	  Slightly modified some type-reference dump methods.  
	  Many chp test outputs updated to include channel direction
		in ports list (and types in general).  
	  Added a bunch of new tests for type checking CHP receives.  
	  TODO: check CHP loops, guarded statements, selections, etc...


2005-06-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-19:
	  Finished basic type-checking of CHP bodies, and added a bunch of 
		simple test cases in test/parser/chp.  More tests to come.  
	  Parse-failures for nonmeta expressions and references 
		have more verbose error messages, because of longer
		return path (rather than throw() on deepest error).  
		Distant TODO: organize and present error hierarchically
	  Implemented CHP object dump, and persistence in methods.  
	  Added CHP dump/persistence to process_definition, 
		which resulted in larger process_definition objects
		stored in the object file, tests have been updated.  
	  That said, this branch is in pretty good shape.  


2005-06-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-18-merged-nonmeta-04:
	  Merged revisions from child branch, also including a minor
		typo fix in AST/art_parser_chp.cc.  
	  Summary: nonmeta value-references and data type checking.  


2005-06-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-17-nonmeta-04:
	  Final revision in this sub-sub-branch.
	  Added: Object/art_object_CHP.tcc for template method definitions.  
	  In CHP::body::check_build(), 
		now splitting up sequence of CHP statements as follows:
		Each group contains a sequence of CHP statements
		that end with a do-forever-loop.
		Each of these groups is added to the list of concurrent
		actions in the process definition.  
		Within each group, actions are sequential.  
	  Implemented: process_definition::add_concurrent_chp_body().
		Also added CHP field to process-definition, 
		but nothing is done yet with it.
	  TODO: in mother branch, make CHP body persistent.  
	  Replaced entity::CHP::channel_send::push_back
		with template method that takes care of type-checking.  
		Done some preliminary spot check testing, 
		but not added the new test cases to Makefile.am yet.
	  Object/art_object_CHP.h: new (unimplemented) do_forever_loop.
	  Update error messages on data (nonmeta) expression type mismatch.  
	  Fixed int_instance_collection::get_type_ref, actually now 
		fetches the type-ref of the first instantiation statmeent.
	  TODO: proper sub-typing of instantiation_statement, 
		further abstraction of index_collection_list.  


2005-06-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-17-nonmeta-03:
	  Added built-in bool_type_ptr (data_type_reference)
		for data expression type checking, 
		and int32_type_ptr just for convenience.  
		Tentatively pints are promoted to int<32>s when
		type-checking data expressions.  This may change later.  
	  Implemented (new, virtual) data_expr::get_data_type_ref()
		for non-meta expression type-checking (untested).  
		Tentative policy regarding int<>s:
			arithmetic and relational expressions must
			operate on ints of the same width 
			(if that can be determined statically, 
				i.e. not template or array-dependent)
			if cannot be resolved, then don't reject until unroll.
			if mismatch found, return NULL to signal error.  
		pbools are promoted to bool in nonmeta context.
	  Added new template policy to simple_nonmeta_value_reference:
		data_type_resolver: where each specialization dictates
			how a type-reference is created from reference.  
		simple_nonmeta_value_reference<Tag>::get_data_type_ref()
			is implemented using this policy.  
	  Renamed fundamental_type_reference::may_be_equivalent to
		may_be_type_equivalent, analogously for must_be_equivalent.  
	  The three policy structs for instance_collection<Tag>
		have been consolidated into one "collection_type_manager", 
		and also added new static function, get_type().
	  data_type_reference::make_quick_int_type_ref(size_t)
		purely for convenience.  
	  TODO: check expressions of send and receive actions in CHP.  


2005-06-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-17-nonmeta-02:
	  Header clean-up: liberating most Object/*.h headers from
		dependence on "Object/art_object_fwd.h" --
		conforming to a need-to-know policy for headers.  
		Consequentially, affected header files use their
		own forward declarations.  
		I'm so glad I have the 'check-headers' target for this...
	  Slightly faster rebuilds, certainly less building each time
		the art_object_fwd file is touched.  


	* ARTXX-00-01-04-main-00-42-CHP-01-17-nonmeta-01:
	  This branch is for developing nonmeta data instance references
		as run-time value-expressions, children of entity::data_expr.
	  This will enable basic expression type checking of data exprs.
	  Reserved for later development: operator overloading.
		See 2005-06-11 entry in NOTES.  
	  In this revision:
		Removed "Object/art_object_inst_ref_data.tcc"
		Added "Object/art_object_nonmeta_value_reference.{h,tcc}"
		Renamed: simple_meta_instance_reference_parent_type ->
			meta_instance_reference_parent_type
			(analogously for nonmeta)
		Introduced enum_expr and struct_expr (empty) in
			"Object/art_object_data_expr_base.h"
		Placeholder data_value_types for enum and struct (undefined)
			in "Object/art_object_expr_types.h"
		Added appropriate data_expr_base_type to class_traits for
			data and parameter type tag specializations.  
		Replaced data and param -subtyped nonmeta_instance_references
			with nonmeta_value_reference template class, 
			preserving typedef'd names.  


2005-06-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-17:
	  Working on CHP::send construction and type-checking.  
	  TODO: check data_expr against nonmeta_datatype_instance_reference.  
		Will need nonmeat_value_reference extensions.  
	  Partially implemented CHP::send::check_action().
	  Added expr_list::postorder_check_nonmeta_exprs().
	  Partially implemented entity::CHP::channel_send::push_back, 
		but likely to rewrite as for-loop.  
	  Some list members updated to vector types:
		builtin_channel_type_reference, CHP::send_action.
	  Obsolete code cleanup in "Object/art_object_definition[_chan].h"
	  Some quick helper methods added to channel-related classes.  


2005-06-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-16:
	  Starting to test CHP checking piece by piece.  
	  New basic CHP tests will go into test/parser/chp.  
	  expr_list::types added "meta" to names to distinguish from future
		"nonmeta" versions.  
	  Initial implementation of CHP::statement::check_action (virtual).
	  parser::CHP::communication's chan member now restricted to
		inst_ref_expr, naturally.  
	  parser::CHP::receive::lvalues is now inst_ref_expr_list, 
		was just expr_list.
	  Enabled id_expr::check_nonmeta_reference, which uses
		inst_base->make_nonmeta_instance_reference... works fine.  
	  entity::nonmeta_instance_reference new method
		get_inst_base_subtype, returns type-specific
		instance-collection ptr, as dictated by template type.  
	  Added direction (char) field to channel_type_reference_base, 
		valid values are '\0', '!', '?'.
	  Updated channel_type_reference_base::dump to include direction.  
	  Updated unroll test outputs in test/parser/channel.
	  parser/art++-parse.yy: update nonterminal types for
		chp_receive and inst_ref_expr_list.


2005-06-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-15:
	  Significant development to completing CHP objects using
		nonmeta-instance-references (-300, +1900 LOC).  
	  "AST/art_parser_chp.*" checked types are now (nonmeta) 
		bools and ints, not pbools and pints.  
	  Type name substitution for distinction: return_type ->
		meta_return_type and nonmeta_return_type
	  Method name substitution, analogously: check_foo ->
		check_meta_foo and check_nonmeta_foo.
	  Implemented most of expr::check_nonmeta_expr, untested.  
		(same with ranges and indices...)
	  Implemented (trivial) 
		instance_collection_base::make_nonmeta_instance_reference.
	  Implemented many classes in "Object/art_object_data_expr.cc"
		adapting many from their meta expression counterparts.  
	  Added new type hash keys to "Object/art_object_type_hash.h".
	  Removed: "art++.h"
	  Minor assertion updates in "util/persistent_object_manager.cc"


2005-06-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-14:
	  gcc4-isms: wants method and typeinfo definitions for unused
		classes, probably being conservative.  
		Now builds and runs smoothly (but largely) on OS X 10.4.  
	  Updated parser/art++-parse-options.h to account for 
		bison-2.0 differences from bison-1.875.  
		Damn you, bison!

	* ARTXX-00-01-04-main-00-42-CHP-01-13:
	  distcheck fix: being smarter about auto-generated
		header-check dependencies -- basic script improvements
		for distcheck robustness.  


2005-06-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-12-merged-dataexpr-10:
	  Child branch merge, details of this series below.  


2005-06-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-10:
	  Makefile.am: added -Wundef (die if preprocessor evaluates undefined)
		Also added new lex/parse options files to dist.  
	  lex/yacc files updated with preprocessor headers to satisfy
		use of undefined macros.  
	  Committed changes involving NEW_SIMPLE_INST_REF, 
		removing proprocessor conditionals.  
	  Updated CHP object classes to use int/bool expressions and
		non-meta instance references, finally!
	  Ready to merge back up a branch.


2005-06-07	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-09:
	  Skeletal (trivial) implementation of nonmeta_index_list.
	  Type hash keys for simple (meta) instance references updated
		to become distinguishable from simple nonmeta
		instance references.  (Macro names updated too.)
		Unroll test header dumps have been updated to reflect 
		this change.  
	  Added simple_nonmeta_instance_reference<Tag> classes, modeled
		after their meta-counterparts.  
	  Purged the proposed data_reference template class for good.  
	  Implemented essential methods of 
		simple_nonmeta_instance_reference_base.
	  Implemented core methods of simple_nonmeta_instance_reference
		template class.  
	  PLAN: After nonmeta_[data]_instance_references have been validated, 
		then that feature may be leveraged in the CHP object classes, 
		at which point, we can merge up a branch.


2005-06-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-08:
	  Progress!  Replaced (meta) simple_instance_reference
		and value_reference class hierarchy with lattice, 
		enabled by the NEW_SIMPLE_INST_REF flag in 
		"Object/art_object_fwd.h".  
		Inheritance is a mess, but I've got plans for alternate
		implementations for the appropriate time.  
	  Little more renaming:
		*_meta_instance_reference ->
			simple_*_meta_instance_reference
		(rather than "simple" being implicit)
	  TODO: replicate for simple non-meta instance/value references!


2005-06-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-07:
	  More painful reorganization and renaming... ugh.
		*_meta_instance_reference_base ->
			simple_*_meta_instance_reference_base
		value_reference -> simple_meta_value_reference
	  As soon as the dust clears, will rearrange (final)
		simple_*_meta_instance_reference classes with MI.  


2005-06-06	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-06:
	  Makefile.am: updated header-check make-dep flags (no -MT or -MP)
		using new scripts to "promote" header dependencies:
		rather than depend on the headers, depend on the
		*checked* header (*chk) files to ensure bottom-up
		construction (after first time) of header-checks!
		(I'm so proud of myself...)
		../config.h is an exception, don't check it.  
		Disabled clean-header-deps target.
		This also catches circuilar dependencies in headers
			e.g. betwee util/memory/ref_count_pool.h and
			util/memory/count_ptr.h (now fixed).
		for this project I want to be anal and forbid circular
			dependent headers.  
	  More massive class renaming:
		simple_meta_instance_reference -> 
			simple_meta_instance_reference_base
		meta_instance_reference -> simple_meta_instance_reference
			(class template)
		simple_nonmeta_instance_reference =>
			simple_nonmeta_instance_reference_base
		nonmeta_instance_reference ->
			simple_nonmeta_instance_reference
	  Exapnded type-refinements for data, channel, proc, param
		from nonmeta_instance_reference_base


2005-06-05	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-05:
	  Makefile enhancement: added (optional) dynamic dependence
		tracking for header-tests, which conditionally creates
		(user only) dependencies (.hchkd, .tccchkd) in the
		respective .deps subdirectories.  A complete list of 
		all such dependencies is auto-generated and used by 
		Makefile.am to auto-include in Makefile.in.  
		The major benefit of this is that now, the check-headers
		target will check all target header files that depend on
		the modified ones, not just the ones touched.  
		This patchlet should ideally make it back to the main
		trunk sooner...
	  More class planning for nonmeta_instance_references.  
		A massive reorganization is inevitable.  
	  Some header file cleaning.  


2005-06-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-04:
	  Massive renaming of classes continues...
		index_list -> meta_index_list, 
		index_expr -> meta_index_expr, 
		dynamic_index_list -> dynamic_meta_index_list, 
		dynamic_range_list -> dynamic_meta_range_list, 
		range_expr_list -> meta_range_list, 
		range_expr -> meta_range_expr
	  Added nonmeta expr classes to foundation of meta expr classes
		so that meta exprs are acceptable to nonmeta exprs.  
	  Inlined some empty base classes' ctors and dtors.  
	  TODO: nonmeta instance references.  


2005-06-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-03:
	  MAJOR rework of instance-references beginning.
	  All old existing instance reference were
		meta-instance-references, references that would eventually
		be resolved at compile time upon template instantiation. 
		CHP and other non-meta languages work with run-time
		resolved, or nonmeta-instance-references.  However, 
		it's important to note that meta-instance-references are
		acceptable where their non-meta-instance-references are
		expected (they are just run-time constant, after all).  
		Thus we introduce another level in the hierarchy, rooted
		at nonmeta_instance_reference_base.  
	  Global rename: (previous occurences)
		instance_reference -> meta_instance_reference
		(file names preserved for now, will change later)
	  entity::object parent has been expunged as a parent class
		from all instance-references.
	  Temporarily reverted USE_DATA_REFERENCE (in "Object/art_object_fwd.h")
		to 0 (off).  We intend to redefine data_reference in terms 
		of nonmeta_instance_references.  
	  NOTE: instance reference connections only live in meta
		language domain, thus it is kind of redundant to 
		call them meta_instance_reference_connection, but at least
		this makes it clear.  
	  NOTE: member instance references currently only exist in the
		meta language domain, however they could also be
		ported to the non-meta domain, oooooh.  
	  Removed pure virtual get_inst_base from mete_instance_reference_base
		because it only makes sense for simple_meta_instance_reference.


2005-06-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-11:
	  gcc-4.0-ism: Object/art_built_ins.cc: member initializations 
		of specialized classes don't need empty 
		template <> signature.  
	  util/test/Makefile.am: added macro for compiling with -save-temps
		for compiler debugging. 
	  NOTE: This snapshot (on branch) is confirmed to compile and run
		succesfully with Apple's gcc-4.0 build 5026 update.  
		The one that shipped with OS X 10.4 Tiger (build 4061)
		is badly broken, please update your compiler with the
		XCode 2.1 Developer's Tools update before compiling.  
	  Hopefully, after the dataexpr branch is done, this can all
		be soon merged back onto the main trunk.  Patience!


2005-06-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-10:
	  Portability and compiler compliance patch, 
		also for VPATH build robustness.
	  Obsolete template method definition removed from parser::context.
	  Added auto-generated empty stderr files
		to BUILT_SOURCES in src/util/test/Makefile.am.  
	  src/util/test/test-expect.sh:
		check for auto-generated .stderr files, because
		won't be in srcdir.  


2005-06-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-02:
	  New base classes for data-expressions (CHP context)!
	  data_expr is refined as int_expr and bool_expr, and now
		(here's the kicker) pint_expr : int_expr and
		pbool_expr : bool_expr!  
		Rationale: In the CHP context, meta-parameter 
		(of the same type) are valid rvalue expressions 
		just as run-time variables of int and bool are.  
	  Rename: datatype_instance_reference ->
		datatype_instance_reference_base
	  TODO: fahr-fahr-away, use GMP's mpz for arbitrary length integer.  
	  Introduced refined instance_reference: data_reference<Tag>
		which is derived from instance_reference<Tag>
		and from an data expression interface class (int_expr
		or bool_expr).  Such data instance references serve as
		connectible entities and assignable entities in the
		CHP context.  (Analogous to what was done with
		value_reference for meta-param references.)
	  Relocated datatype_instance_reference(_base) to 
		"Object/art_object_inst_ref_data.h"
	  A few new test cases for test/parser/channel.  


2005-06-02	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09-dataexpr-01:
	  This branch is for developing expression framework for datatypes, 
		very similar to those of meta-parameter expressions.  
	  In this revision, we've FINALLY liberated the param_expr
		(and friends) class hierarchy from the 'object' parent class, 
		which we could've done after we did away with the 
		object-expression stack in parser::context.  
		One less virtual pointer per expr-object!


2005-05-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-09:
	  Partial implemention of parser::CHP::statement::check_action
		for a few statement classes (untested).
	  Skeletal implementation of entity::CHP classes in
		"Object/art_object_chp.{h,cc}"
	  Assigned CHP classes' type hash in "Object/art_object_type_hash.h".
	  Added a few basic template channel prototype tests, so far so good.  
	  TODO: object expressions... we need *datatype-expressions* for CHP, 
		currently we only have meta-language (param) expressions.  
		This work must be done IMMEDIATELY, probably on a sub-branch
		of this branch.  


2005-05-28	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-08:
	  Purged all traces of parser::context::definition_stack.
	  New class: old channel_type_reference was split off into
		builtin_channel_type_reference and channel_type_reference, 
		with common parent channel_type_reference_base.
		(Will soon rename channel_type_reference 
		to user_channel_type_reference.)
	  builtin_channel_type_reference just contains a list of 
		data_type_reference (pointers), which represents channel
		types of the form "chan(type,...)" without having a 
		builtin_channel_definition.  
	  The base channel type of a user-defined channel has been reduced
		to a builtin_channel_type_reference.  
	  entity::user_def_chan now contains (pointer) 
		builtin_channel_type_reference.  
	  Moved some parser functionality around to follow changes
		in the channel_type_references.  
	  Updated class_traits<channel_tag> in 
		"art_object_classification_details.h"
		Never before have I been so happy that I did this -- 
		what would've been days of changing code across tens of
		files was accomplished with TWO line changes in the 
		policy classes.  Also added new sub-tags of channel_tag
		in "art_object_classification_tags.h" but not used yet, 
		until we decide to split off channel_tag.  
	  Type hash keys for channel type references updated.  
	  TODO: now ready to type-check and add CHP?
	  TODO: more test cases, perhaps preliminary template checks.  


2005-05-28	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-07:
	  Reorganized parser type references to fit the needs of channels.
	  The basic issue is that built-in channel types (chan(...)) 
		currently have no home scopespace, therefore we must
		work their type information into
		"built-in-channel-type-references", which are coming soon.  
	  TODO: split up channel type references into built-in and
		user-defined (currently, only user-defined).
	  parser::context: phased out definition_stack, which was once
		used as a placeholder to construct complete type references.  
	  concrete_type_ref now an abstract class, the old functionality
		has been pushed down to (new) generic_type_ref.
	  chan_type now derives from concrete_type_ref, no longer type_base.
	  generic_type_ref::check_build has been phased out due to
		abandoning the context definition_stack.  
	  typedef_alias::check_build base type is concrete_type_ref, 
		which is now abstract, so we temporarily wrapped the 
		existing code (for generic_type_ref) in a conditional
		dynamic cast, just to patch and move on... will revisit
		later to complete the chan_type case.  
	  parser/art++-parse.yy: updated symbol return types to reflect
		changes in concrete_type_ref hierarchy.  


2005-05-27	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-06:
	  Added some template methods to context to replace annoying
		copy-pasted methods.  
	  Partially implemented user_chan_type_definition check.  
	  Added a handful of test cases to test/parser/channel.


2005-05-26	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-05:
	  Finished initial crack at type-checking channel definitions, 
		currently, only checking prototype declarations, 
		punting definitions for a few more revisions until
		further testing.  AST files (,h.,tcc) touched: art_parser_base,
		art_parser_definition, art_parser_formal, art_parser_type.
	  Factored out concrete_type_ref::check_build into more useful
		::check_type (useful return value).  
	  Split-off "Object/art_object_definition_chan.h" from 
		"Object/art_object_definition.h", it also uses
		the recently added "Object/art_object_port_formals_manager.h".
		Added a few necessary virtual method overrides 
		to user_def_chan, like those in process_definition.  
		Also cleaned up conditionals, making USE_PORT_FORMALS_MANAGER 
		permanent.  
	  entity::user_def_chan has new field members:
		datatype_list: the datatype (abstract) carried on channel
		port_formals: the physical datatypes used to implement
	  Very basic test cases added so far, more coming in next revision.  
	  Grammar: updated to allow non-built-in datatypes in channel
		definition's abstract data type list.  
	  

2005-05-26	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-04:
	  Revenge of the BSD.  
	  Patches to satisfy gcc-3.4 on FreeBSD, more compiler anality.  
		(Unfortunately, still need to run gmake, not bsdmake.)
	  Changed built-in param type pointers to be part of
		class_traits<Tag> specializations.  
		Global static initialization remains in "art_built_ins.cc".
	  Code cleanup: caught many missing declarations required by gcc-3.4+.
	  src/util/test/Makefile.am link dependencies fixed to work 
		with bsdmake, on the off chance that I forget to run gmake.  


2005-05-25	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-03:
	  Factored out port_formals_manager into own class, 
		now can reuse it for channel_definition, etc.
		That was too easy.  
	  New class files: "Object/art_object_port_formals_manager.{h,cc}"


2005-05-25	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-02:
	  Reorganizing code to make way for channel definition type checking.  
	  Some housecleaning of committed conditional code in
		"AST/art_parser_type_base.h".  
	  TODO next: factor out port_formals_manager from process_definition
		so we may reuse it in used_def_chan.  


2005-05-24	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42-CHP-01-01:
	  Starting CHP-01 branch.
	  Liberated parser::CHP classes from the old "check_build".
		Still null implementations at the moment.  
	  Going to fix definition checking, possibly in a sub-branch, 
		before embarking on channel definitions and CHP.  
	  Temporarily made chp_body in grammar optional in several places.  
	  Coming soon: test/parser/channel.  


2005-05-23	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-42:
	  Wrote example program of what one might do with production rules
		in an object file, in "prsobjdemo.cc".
	  Updated header checks to use .tccchk suffix for .tcc files.  
	  artobjunroll: check to make sure input file != output (strcmp).  
	  name_space::collect_namepaces works recursively, as it should.  
	  Added collect<> template method to module and namespace, 
		defined in their respective (new) .tcc files.  


2005-05-22	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-41:
	  Header checks: now using .tchk for .tcc files so suffix rules
		don't clash.  
	  Added Object/art_object_util_types.h, which inherited some
		less essential typedefs from Object/art_object_fwd.h.
	  Chased down a few cases of using namespace in headers, 
		and added count_ptr.tcc where necessary.  
	  Few more spots of header fixes.  
	  

2005-05-22	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-40:
	  Lordy, lordy! Snapshot forty!  (This epoch is maturing...)
	  Continued general maintenance:
	  Makefile.am improvements on standalone header validation.  
		Reorganized macro file lists a bit.  
	  generated parser/art++-parse-prefix.h now includes
		(new) "parser/art++-unioin.h" for necessary AST
		class forward declarations to define the YYSTYPE union.  
	  Distribution (distcheck) is still immaculate.  


2005-05-22	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-39:
	  Source organization revision.
	  Instated really anal-retentive "standalone header" tests, 
		affecting headers in all subdirectories.  
	  New Makefile targets:
		check-headers: compiles each {.h,.tcc} file into own executable
			(empty main) to test whether header file depends on
			other headers not already included.  
			Nobody likes a header that only works when other
			(unknown) headers are included.  
		clean-header-tests: basically rm -rf *.hchk
		check: always builds and runs all *.hchk's now.
	  Finally conform to rule: NO "using namespace ...;" in header files, 
		only allowed in source .cc files.  
	  Had to painstakingly explicitly include proper pointer-class
		sources where I was plain lazy before and just included
		"util/memory/pointer_classes.h".  
	  Split up some forward declaration files in util and Object for 
		modularity, minimizing preprocessing in some cases.  
	  Created "util/size_t.h" which includes (conditional on configure)
		<cstddef> for the declaration of size_t.  
	  Making this revision distcheck required some finesse with
		Makefile.am.  


2005-05-20	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-38:
	  Added basic getopt functionality to main programs.  
	  Updated "util/getopt_portable.h" to use configure results.  
	  Factored out main-level functions into main/main_funcs.{h,cc}.
		This nicely hides complexity, making main source 
		tidy and modular.  
	  Separated out util/ library to compile to libfangutil.la.
	  Parser: empty file now returns in non-NULL empty root_body pointer.  
	  util:
		static_trace.h: DEFAULT macros added for simplicity
			(updated uses in AST/*.cc Object/*.cc)
	  some more comments in util/ChangeLog.
	  see also test/ChangeLog for test script updates in this revision.  

	* linux-gcc-3.4 linker not as forgiving about undefined typeinfo of
		unused classes, read: I was lazy.
	  Added skeletal method definitions for currently unused class.


2005-05-19	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-37-merged-PRS-01-09:
	  Merged the -PRS-01 revisions (through -09) to main.  


2005-05-18	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-09:
	  Added a bunch of simple tests for PRS in tests/parser/prs.
	  Fixed some minor bugs *gasp* I discovered on the way.  
	  Added sanity check functions to entity::PRS classes.  
	  Renamed and finished PRS::rule::expand_complement.
	  Adding production rules now auto-expands complements.  
	  prs_expr::dump is prettily-parenthesized.  
	  Updated test/Make.test to include a 'cleaner' target.  


2005-05-17	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-08:
	  Now using ref-counts for all entity::PRS::prs_expr.
	  Finished implementing PRS::prs_expr::negate and 
		negation_normalize (both untested).  
	  Patched count_ptr so self-assignment is checked and handled
		appropriately (could think of it as a bug before, 
		or an unstated limitation).  
	  TODO: generate new test cases for PRS functionality.  
	  TODO: write an example of accessing a process-definition's
		PRS, maybe doing some transformations or diagnostics.  
	  TODO: write some template collection passes for 
		namespace, definitions, etc.
	  IDEA: collate structurally identical bool instance references 
		together into the same reference count pointer, 
		by caching the literals' vars.  


2005-05-17	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-07:
	  This revision doesn't really belong here, but it was done anyhow.
	  What's good for the gander, is good for the goose.
	  Most changes apply to the util library, almost nothing is specific
		to art++ itself.  
	  Updated some uses of util::static_trace -- it really should be
		as early as possible in each translation unit
		for accurate reporting.
	  util::memory::count_ptr now pool allocates reference-counts, 
		making their use extremely efficient.  
		The difficulties lie with a global consistent reference
		to the state of the count-allocator, which itself needs to
		be reference-counted for coherent global static initialization.
		Note: all maanual management of count pointes should use
		the STATIC_RC_POOL_REF_INIT and NEW_SIZE_T macros
		defined in "util/memory/count_ptr.h".
		Also, count_ptr.tcc was split off to facilitate completing
		definitions of other types before their destructor definitions
		are required by the delete operator.  
		Currently, the global reference-count pool is never freed
		until exit -- see remark in 
		"util/memory/ref_count_pool_anchor.h".  
	  Added more useful utility functions to util::memory::chunk_map_pool
		and friends.  
	  Updated some tests in util/test to accommodate library updates.  
		

2005-05-16	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-06:
	  PRS::literal changed to include a count_ptr<bool_instance_reference>
		making it trivially copy-constructible.
	  PRS::pull_{up,dn} includes literal (not pointer thereof) now, 
		resulting in more efficient storage.  
	  PRS::prs_expr and rule's are now chunk_map_pool-allocated.  
	  Some code clean up.  
	  NEXT: negation-normal-form and other utility methods.  
		Possibly reconsider choice of pointers classes
		for expression operands.  


2005-05-16	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-05:
	  Now actually adding production rule objects to process_definition.
	  Implemented PRS dump routines for readable feedback.  
		Currently prints using short local (unqualified) names.  
	  Updated many (object) tests to account for increased size of 
		process_definition binary object
		(+4B for size of PRS pointer list).  
	  This snapshot is a candidate for merging back to main trunk.  


2005-05-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-04:
	  Completed expr::check_prs_expr implementations for the 
		relevant expression classes (partially tested).
	  Updated constructor interfaces of entity::PRS classes.  
	  Added blank PRS::rules_list to process_definition, 
		but doesn't do anything with them yet.
		TODO NEXT: implement addition, dump, object persistence.  
	  Moved some files, added some files:
		Split off Object/art_object_PRS_base.h and
			Object/art_object_definition_proc.h.
		Added util/iterator_more.h.
	  One basic test updated parser/basic/013.stderr, was unchecked,
		now gives error.  


2005-05-15	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-03:
	  Parser: promoted token_string and token_char to node_position.
	  Filled-in parser::relational_expr::check_expr, and
		parser::logical_expr::check_expr.
	  Upgraded some expression types in classes for stronger typing.  
	  Started setting up check_prs_expr infrastructure in PRS and expr.  


2005-05-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-02:
	  Added initial skeleton classes for PRS objects.  
		Fill-in-the-blanks soon.  
	  Some util library stop-tweaks: persistent_object_manager
		now tracks raw_pointer read-visits separately, 
		added collect_pointer_list template method.


2005-05-14	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-36-PRS-01-01:
	  This branch is for early development of PRS management.  
	  The initial revisions do some clean-up with a few parsers'
		check_build routines; they are still functionally ugly.  
		Beginning to make check routines consistent using more
		CHECK_PROTO macros to keep things straight (e.g. type_base).  
	  node_list has a new check_list template method
		that allows one to specify which element's member function
		to invoke recursively.  We intend to eliminate all generic
		calls to check_build accordingly.  


2005-05-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-07:
	  All cleaned up, and ready to merge back to main trunk!
	  All obsolete code involving expr::check_build... GONE.  
	  No trace of object_list remains, nor any of the 
		evil associated therewith.  


2005-05-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-06:
	  Pretty much done amputating:
	  entity::object_list is practically eliminated, Gott sei dank!
	  parser::context's object stack is gone.  
	  parser::expr::check_build (and friends) has been phased out.  
		(All conditionally commented out HAVE_EXPR_CHECK_BUILD.)
	  No longer instantiating node_list<const expr>.
	  Eliminated unused class parser::connection_argument_list.
	  Updated calls to check_build to use check_expr and check_reference,
		mostly affecting "AST/art_parser_instance.cc".
	  Upgraded parser::connection_statement's lvalue to inst_ref-expr*.  
	  It's all coming together... now just have to clean up
		the mess of comments and obsolete code.  


2005-05-13	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-05:
	  Continued gradual elimination of expr::check_build (and friends).  
	  Removed inst_ref_expr::check_build().
	  Moved alias_list::postorder_check to expr_list, along with a few
		other useful static functions.  
	  New method for actuals_base::check_actuals, replacing check_build.
	  Added replacement methods for instnace_connection, and 
		connection_statement, calling new check_actuals.  
	  entity::definition has new prototype for certify_port_actuals, 
		process_definition::... has updated definition.  
	  Ported object_list::make_port_connection to 
		connection_statement::make_port_connection (static).
	  parser::actuals_base no longer derived from instance_management.  
	  parser::connection_statement now derived from instance_management.  
	  Partially cleaned up some obsolete code, but there'll be more
		deletions in the next revisions, I promise.  


2005-05-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-04:
	  Added expr::check_generic (virtual) to present the result of
	  check_expr or check_reference dynmiacally cast to the other type, 
	  solely for the purposes of working with alias_list's checking
	  procedure.  (read: kludge, but less than it was before)
	  id_expr and member_expr primary check method is now check_reference.  
	  Added placeholder check_generic routines to array_concatenation, 
	  loop_concatenation, and array_construction.  
	  (Will need to add check_reference routines once we start 
	  implementing them.)
	  Updated alias_list::check_build to use check_generic, 
		and moved object_list make_param_expr_assignment
		and make_alias_connection methods into private methods.  
	  Updated token_identifier to use check_reference.  


2005-05-12	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-03:
	  Checked implementation of check_expr, check_reference, 
		check_indices, check_ranges and fixed minor bug 
		since last revision.  
	  Replaced calls to [dense_]range_list::check_build()
		with check_ranges and check_indices where appropriate:
		formal_id's, instance_array.  
	  One problem: check_expr returns param_expr, whereas
		check_reference returns instance_reference_base, 
		both of which are 'objects'.  alias_list is a list of
		expr, but wants generic objects to determine at type-check
		time whether it is forming an expression assignment
		or alias connection sequential instance management item.  
		Thus, we cannot eliminate the object stack (nor calls to
		expr::check_build) until this is resolved.  


2005-05-11	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-02:
	  Implemented expr::check_expr (pure virt.) by mostly trivially
		copying over the old check_build's.  
		Intend to phase out expr-related check_build calls in
		favor of check_expr.  
		check_index, check_ranges, etc. are analogous.  
	  Minor: split off range and range expr into own AST source file.  
	  Minor: permanently erased paren_expr class.  
	  Minor: inst_ref_expr class to sub-type expressions that
		represent instance or value references, adds a virtual
		function check_reference, which will leverage the work
		done by check_expr (or vice versa).  
	  Minor: removed class postfix_expr (was useless).
	  Minor: continued to strip out useless tokens in the AST, 
		also cleaning grammar.  


2005-05-10	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35-exprcheck-01:
	  This branch is intended to rework the way expression checking
	  is done by the parser, replacing the archaic check_build
	  in an orderly manner with object-specific interfaces and routines.
	  In particular, this branch deals with expression checking.  
	  The main goal is to delete the old context::object_stack mechanism
	  used to construct hierarchical expression objects.  
	  This first revision deleted the useless parser::postfix_expr class.  
	  As a result, parser::index_expr is directly derived
	  from parser::expr.
	  After this branch is complete, we can work on fixing
	  type-references (w.r.t. strict and relaxed templates) in
	  a cleaner fashion.  


2005-05-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-35 (main trunk):
	  Major organization for sake of code maintainability:
	  Eliminate CPPFLAGS -Iblah.  Include files relative to 
	  root path of source tree, i.e. with Object/ or util/ or AST/...
	  Motivation: reduces code obfuscation, by letting the casual
	  reader know where to find dependent files, rather than counting
	  on knowing which subdirectory each included file belongs in.  
	  Also cleaned up some obsolete code in util/ directory, 
		reducing almost 2000 LOC.  


2005-05-09	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-34 (main trunk):
	  Cleaned up old hash_string code (useless).  
	  Improved some expr/inst_ref dump code to be more verbose, 
		qualifying names of value-references.  


2005-05-08	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-33 (main trunk):
	  Cleaned up conditional code
	  (should've been committed in -template-01 branch).
	  Also removed some dusty obsolete code snippets.  


2005-05-04	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-30 (main trunk):
	  Updated parser/try_lex_catch.awk to also work with yacc output.  

	* ARTXX-00-01-04-main-00-28-merged-template-01-09 (main trunk):
	  Merged -template-01 revisions back to trunk.  

	* ARTXX-00-01-04-main-00-27-template-01-09:
	  Clean up of previous release: expurgated ART::parser::node!


2005-05-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-08:
	  It is done.  ART::parser::node (and all its evils) have been phased
	  out, in favor of a cleaner token class heirarchy.  
	  Not a single test broke!
	  This revision has commented out the evil, next revision will
	  clean up.  


2005-05-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-07:
	  Auto-generated parser helper code (union) no longer needs to 
	  return a mother pointer (node*).  
	  It 'virtually' implements the two neceessary functions in two
	  giganormous function pointer tables (delete, what_where).  
	  (A virtual virtual call!)
	  Soon, going to remove ART::parser::node!


2005-05-03	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-06:
	  Parser awk scripts: factored out common subroutines into
	  separate scripts, so now need to invoke awk -f with co-dependent
	  scripts.  This reduces duplicate maintenance on these files, 
	  which will soon be modified, at the cost of having to keep around
	  more script files.  


2005-05-02	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-05:
	  Updated grammar to include instance type completion, 
	  where array instances may have their types completed
	  with relaxed template arguments (after array is declared with 
	  strict template arguments).  
	  (Includes type_completion + connection statement.)
	  check_build for these new classes is yet unimplemented.
	  GRAMMAR UPDATE: removed semicolon after namespace close-brace.
	  Not keeping around silly semicolons in AST structures, 
		deleting useless tokens immediately in parser.  
	  Tests updated accordingly.
	  TODO: re-update all tests with YACC=/usr/bin/yacc configuration.  
		(been forgetting to do this for a long time...)


2005-05-02	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-04:
	  Updated ART::parser::node_list::what() message (and test cases).
	  Created class ART::parser::template_argument_list_pair, but unused.
	  Added util/type_traits.h for convenience and compatibility.  
	  Some more parser implementation notes in src/parser/NOTES.  
	  Standardized header inclusion in parser/{yacc,bison}-union-hack.awk.


2005-05-01	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-03:
	  Parser context now adds template formals to either the 
	  strict parameter list or the relaxed parameter list.  
	  Some minor re-organization to reuse code in template_formals_manager.
	  TODO: Type-references template arguments need to be split into
	  strict and relaxed.  


2005-04-30	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-02:
	  Substituted old template_formals_list and _map in definition_base
	  with a template_formals_manager (basically wrapper around the former)
	  and split up single formal parameter list into a 
	  strict list and relaxed list.  
	  Many definition_base method calls now just wrap around calls
	  to template_formals_manager methods.  
	  As a consequence, the binary format of all definitions
	  has been extended by one pointer-list.  
	  Since none of the current test-cases use relaxed parameters, 
	  the object sizes (per definition) were increased by 4 bytes, 
	  the sizeof(size_t) for '0' representing an empty list.  

		+ Some type-check error messages have been improved.  


2005-04-28	David Fang		<fangism@users.sourceforge.net>

	* ARTXX-00-01-04-main-00-27-template-01-01:
	  Updated parser to extend template formal signature to 
	  include (optional) list of relaxed parameters.  
	  In transient state: currently type-checking treats
	  both formal lists as one unified list, even though it is now
	  implemented as a pair of lists in the AST.  
	  The definition structure has not been updated yet.  


2005-04-18	David Fang		<fangism@users.sourceforge.net>

	* ART::entity::scopespace is no longer : virtual public object, 
		and ART::entity::namespace is : public object.
		(rationale: simplified class heirarchy somewhat.)

	* ART::entity::definition_base no longer inherits from
		public object virtually.  

	* Started this ChangeLog for more details.  

