						 -*- coding: utf-8 -*-
BRL-CAD Interface Change Policy
===============================

This policy describes formal rules for changing an interface that
potentially impacts developers or users.  The scope is limited to
public interfaces including developer application programming
interfaces (APIs), user application command-line interfaces (CLIs),
and graphical user interfaces (GUIs).  The policy aims to balance
developer agility with interface stability.  Note that renaming an
application is NOT considered minimally impacting, since that name
is the primary means by which users locate the application.

All changes to BRL-CAD are expected to conform to this change policy.
Changes MUST either be:

    A) MINIMALLY IMPACTING, or
    B) FORMALLY DEPRECATED.


MINIMALLY IMPACTING
-------------------

Changes deemed "minimally impacting" can be made at any time.  For a
change to be considered as such, its effect must be strictly limited.
Most are itemized under MINIMALLY IMPACTING CHANGES.  They MUST be:

    A.1) a relatively new interface

        Interfaces introduced recently are often subject to rapid
        development change.  New interfaces are not subject to formal
        deprecation rules until they have been included in at least
        TWO releases without change.

    A.2) an appreciably broken interface

        Interfaces that have been unusable for at least TWO releases
        may be fixed, changed, or removed without notice.  A broken
        interface is one that does not perform its intended function
        and does not have secondary utility.

    A.3) an elementary change

        Simple changes that are trivially accommodated without
        conditional logic or manual inspection can be made at will.
        It includes mechanical changes that can be automatically
        updated by a single static regular expression substitution.

        Examples include renaming, reordering parameters, adding
        optional parameters, eliminating a duplicate equivalent
        interface, adding parameters for implicit behavior, and
        removing unused parameters.


FORMALLY DEPRECATED
-------------------

Changes not minimally impacting must follow formal deprecation
process.  This defers significant changes to major release points or
requires public notification in advance.  Changes are documented in
this file first as DEPRECATED CHANGES then later as OBSOLETED CHANGES.
An interface may be changed:

    B.1) during a major release (e.g. from 7.*.* to 8.*.*)

        Any change may be made without notice.  Major version number
        releases imply intrinsic incompatibility or interface change.

    B.2) during a minor release (e.g., from 7.26.* to 7.28.*)

        The interface must be publicly deprecated beforehand with
        advance notice given in at least TWO minor releases and after
        at least 90 days elapsed since initial release announcement.

Public interfaces scheduled for change should be noted in this file
and visibly marked in the source code.  This marking may be the
DEPRECATED keyword on function declarations, #warning "DEPRECATED ..."
pre-processor statements, @DEPRECATED source code comments, and
combinations thereof.

Where usage is not adversely affected, a run-time statement may be
displayed (typically "DEPRECATION WARNING: ...").  All call references
and documentation should be updated prior to obsoleting.


EXAMPLES
--------

Example #1: rt_shootray() removal

It's decided during 7.50.3 development to remove the rt_shootray()
function. That does NOT qualify as "minimally impacting" because
there's no equivalent replacement and rt_shootray() has been published
and documented in more than two releases.  The function gets listed as
DEPRECATED in the CHANGES file, marked as DEPRECATED in the API
header, and is published via the 7.50.4 release.

The soonest that function could be removed / obsoleted would be in
7.54.0 during 7.53.* development provided more than 90 days had passed
since the initial announcement.  It could NOT be removed in 7.54.2 as
that's a patch version, prior to 7.54, nor during 7.54.0 if less than
90 days had passed since 7.50.6 was posted.

Example #2: bu_log() mod

It's decided during 7.48.1 development to modify bu_log() by adding an
additional optional enum parameter denoting a message type, e.g.,
bu_log(INFO, ...).  This change is considered "minimally impacting"
because it can be characterized by a simple regular expression (e.g.,
"s/bu_log\(/bu_log(INFO, /g)" and calling codes are trivially
accommodated.  All calls to bu_log() should be updated to the new form
prior to change announcement.

The function could be changed at any time so long as it's documented
under MINIMALLY IMPACTING CHANGES.


**********************************************************************
***                       DEPRECATED CHANGES                       ***
**********************************************************************
                    (reverse chronological order)

The interfaces announced below are scheduled to significantly change
or be removed.  They are categorized by the release in which
deprecation was first announced.  If the interface change involved a
removal or transition, both the original and new interface names are
generally listed for reference.

Items marked with a "'" (single quote) are undocumented and may be
removed at any time.

7.38
----
MGED commands
	E (a.k.a "big E") - replaced by "draw -m5"
        
7.32
----
include/bu/app.h
        bu_brlcad_root: replaced by bu_dir
        bu_brlcad_dir:  replaced by bu_dir

include/bg/chull.h
        All functions returning point arrays instead of index arrays.
        Will be replaced by similarly named functions returning
        indexes into provided points array, to allow the caller
        to decide if new arrays are needed. [deprecated 7.32]
        bg_polyline_2d_chull, bg_2d_chull, bg_3d_coplanar_chull,
        bg_3d_chull

include/bu/exit.h
        TODO: warrants discussion

        considering replacing bu_backtrace and bu_crashreport with
        versions that take an optional parameter to pass in a full
        path from the calling application.  (Currently available as
        bu_backtrace_app and bu_crashreport_app, these would replace
        existing versions after deprecation is final.)

MGED gui
	The following will be removed from MGED's menu bar (unused
	features, can be accomplished another way, or will be exposed
	only as lower level settings when there are sensible defaults
	that are seldom changed.)

	Settings->Mouse Behavior->Pick Raytrace-Object(s)

MGED overlay command
	Instead of an optional second argument being the view object
	name, command will take (potentially) multiple plot files
	as input to overlay.  Optional view object name will be
	specified with the -N option.

7.30
----
~/.density
        automatic reading of .density file in home directory
        materials need to be specified or imported [deprecated 7.28]

include/bu/redblack.h
	All redblack related functions, structures and macros
	defined in libbu's redblack.h.  Functions are:
	bu_rb_create, bu_rb_delete, bu_rb_diagnose_tree,
	bu_rb_summarize_tree, bu_rb_extreme, bu_rb_neighbor,
	bu_rb_curr, bu_rb_free, bu_rb_insert, bu_rb_is_uniq,
	bu_rb_set_uniqv, bu_rb_uniq_all_off, bu_rb_uniq_all_on,
	bu_rb_uniq_on, bu_rb_uniq_off, bu_rb_rank, bu_rb_select,
	bu_rb_search, bu_rb_walk
	Use C++ containers set/map from std [deprecated 7.30]

7.28
----
include/bu/malloc.h
        bu_ck_malloc_ptr, bu_mem_barriercheck, bu_prmem
	replaced by modern memory analyzers [deprecated 7.28]

include/rt/mem.h
	rt_memprint [deprecated 7.28]

include/vmath.h
        VCOMB3, VCOMB3N, VJOIN4
        Removed as inconsistent and unused API [deprecated 7.28]

MGED commands
	?devel, ?lib, aproposdevel, aproposlib, %, animmate, db_glob,
	debugbu, debugdir, debuglib, debugmem, debugnmg, expand,
	loadtk, match, memprint, preview, regdebug, regdef, rmats, rrt,
	savekey, shaded_mode, sync
	Removed as part of distillation effort [deprecated 7.28]

7.26
----
image tools
	alias-pix' : incorporating into icv
	asc2pix' : incorporating into icv
	Removed as part of distillation effort [deprecated 7.26]
signal analysis tools
	a-d', d-a', bw-a', i-a', u-a' : incorporating into cv
	d-a', d-bw', d-f', d-i', d-u' : incorporating into cv
	a-d', bw-d', c-d', f-d', i-d', u-d' : incorporating into cv
	f-d', f-i', d-f', i-f', u-f', u-bw' : incorporating into cv
	d2-c', double-asc' : incorporating into cv
	Removed as part of distillation effort [deprecated 7.26]
include/bu/ptbl.h
	BU_PTBL_BASEADDR, BU_PTBL_LASTADDR, BU_PTBL_END
	Removed as private implementation detail [deprecated 7.26]
include/bu/hash.h
        bu_hash_tbl_find, bu_set_hash_value, bu_get_hash_value,
	bu_get_hash_key, bu_hash_tbl_add, bu_hash_tbl_print,
	bu_hash_tbl_free, bu_hash_tbl_first, bu_hash_tbl_next,
	bu_hash_tbl_traverse, bu_hash_record.  public structs
	bu_hash_entry and bu_hash_tbl will be made private.
        Replaced with new API [deprecated 7.26]
include/bu/cmd.h
	remove struct bu_cmdhist and struct bu_cmdhist_obj [deprecated 7.26]
	BU_CMDHIST_NULL, BU_CMDHIST_OBJ_NULL, bu_cmdhist_histor, bu_cmdhist_add,
	bu_cmdhist_curr, bu_cmdhist_nest, bu_cmdhist_prev [deprecated 7.26]
nirt
	-T - use LIBRT_BOT_MINTIE environment variable instead [deprecated 7.26]
all global variables
	global variables are no longer considered published public API [deprecated 7.26]
	bn_mat_identity -> MAT_INIT_IDN or MAT_IDN() or NULL
include/bn.h
	tp_setup, no longer needs to be public API [deprecated 7.26]
include/raytrace.h
	curve_to_tcl_list
	db_full_path_appendresult tcl_obj_to_int_array
	tcl_obj_to_fastf_array tcl_list_to_int_array
	tcl_list_to_fastf_array *_tcl_*, removal of all tcl-specific
	API functions [deprecated 7.26]
include/rt/solid.h
	shouldn't be public API - this level of detail belongs inside the display
        manager [deprecated 7.26]
include/ged/defines.h
	remove struct ged_drawable -  shouldn't be public API [deprecated 7.26]
	remove freesolid from struct ged - exposes struct solid [deprecated 7.26]
include/ged/view.h
	remove current forms of dl_erasePathFromDisplay and invent_solid - they
	expose the struct solid type [deprecated 7.26]
include/tclcad.h
	tclcad_bn_mat_print tclcad_rt_parse_ray tclcad_rt_pr_cutter
	tclcad_rt_pr_hit tclcad_rt_rt tclcad_rt_import_from_path, removal of all
	tcl-specific API functions [deprecated 7.26]
librt, fast4-g
	removal of CLINE entity support [deprecated 7.26]
mged
	kill, killtree, killall, killrefs - replaced with rm command [deprecated 7.26]

	rm comb obj1 obj2 comb1 ... -> new behavior: remove objects and empty combs from .g
	original functionality replaced with rm comb/obj* comb/comb1 ... syntax [deprecated 7.26]

	expand -> replaced by search -name <pattern> (previous docs indicating matching of
	expand was regex were wrong - uses bu_fnmatch.) [deprecated 7.26]

	pathlist, paths -> replaced by search [deprecated 7.26]

7.24
----
include/raytrace.h librt
	RT_DBHASH and RT_DBNHASH [deprecated 7.24]

7.22
----
include/raytrace.h librt
	nmg_model_break_e_on_v -> nmg_break_e_on_v [deprecation 7.22]
	RT_GET_TREE -> BU_GET [deprecation 7.22]
	RT_FREE_TREE -> BU_PUT [deprecation 7.22]

7.20
----
tclscripts/lib
	Mged, Database, Db, Dm, Drawable, Display, QuadDisplay, View -> Ged [deprecated 7.20]
librt
	bspline primitive [deprecated 7.20]
	poly primitive [deprecated 7.20]
	hf primitive [deprecated 7.20]
include/bu.h
	bu_vls_init_if_uninit() -> bu_vls_init() [deprecated 7.20]
GNU Autotools configure compatibility script
	./configure -> cmake . [deprecated 7.20]
include/raytrace.h
	rt_load_attrs() -> rt_gettrees_and_attrs() or db5_import_attributs() [deprecated 7.20]

7.18
----
include/raytrace.h rt_comb_internal members
	region_id -> region_id attribute [deprecated 7.18]
	aircode -> air attribute [deprecated 7.18]
	GIFTmater -> material_id attribute [deprecated 7.18]
	los -> los attribute [deprecated 7.18]
bu.h xdr API
	BU_GLONGLONG() -> ntohll() [deprecated 7.18]
	BU_GLONG() -> ntohl() [deprecated 7.18]
	BU_GSHORT() -> ntohs() [deprecated 7.18]
	bu_gshort() -> ntohs() [deprecated 7.18]
	bu_glong() -> ntohl() [deprecated 7.18]
	bu_pshort() -> htons() [deprecated 7.18]
	bu_plong() -> htonl() [deprecated 7.18]
	bu_plonglong() -> htonll() [deprecated 7.18]
db.h
	rt_fastf_float() -> ntohf() [deprecated 7.18]
	rt_mat_dbmat() -> htonf() [deprecated 7.18]
	rt_dbmat_mat() -> ntohf() [deprecated 7.18]
mged
	?(*) -> ? -(*) [deprecated 7.18]
	apropos(*) -> apropos -(*) [deprecated 7.18]
	dbconcat -> db concat [deprecated 7.18]
	dbupgrade -> db upgrade [deprecated 7.18]
	dbversion -> db version [deprecated 7.18]
	dbfind -> search [deprecated 7.18]
	debug* -> debug [deprecated 7.18]
	comb_std -> comb [deprecated 7.18]
	comb_color -> comb [deprecated 7.18]
	combmem -> comb [deprecated 7.18]
	kill(*) -> kill [deprecated 7.18]
	rotobj -> rot [deprecated 7.18]
	qvrot -> rot -q -v [deprecated 7.18]
	qorot -> rot -q [deprecated 7.18]
	([amov])rot -> rot -([amv]) [deprecated 7.18]
	([op])scale -> sca -(p) [deprecated 7.18]
	([op])translate -> tra -(p) [deprecated 7.18]
	nmg_(*) -> nmg (*) [deprecated 7.18]
	bot_(*) -> bot (*) [deprecated 7.18]
	[so]ed -> edit [deprecated 7.18]
	[tr]ed -> edit -t [deprecated 7.18]
	ls -oA -> ls -O [deprecated 7.18]
	draw -oA -> draw -O [deprecated 7.18]
	erase -oA -> erase -O [deprecated 7.18]
	erase_all -> erase -r [deprecated 7.18]
	move_all -> move -r [deprecated 7.18]
	query_ray -> nirt [deprecated 7.18]
	vdraw -> draw -v [deprecated 7.18]
	vnirt -> nirt -v [deprecated 7.18]
	vquery_ray -> nirt -v [deprecated 7.18]
	xpush -> push -x [deprecated 7.18]

7.16
----
struct bu_structparse 'i' format
       'i' -> '%p' [deprecated 7.16]
reserved attributes and case-sensitivity
	id -> region_id [deprecated 7.16]
	GIFTmater -> material_id [deprecated 7.16]
	GIFT_MATERIAL -> material_id [deprecated 7.16]
	mat -> material_id [deprecated 7.16]
	AIRCODE -> air [deprecated 7.16]
	rgb -> color [deprecated 7.16]
	oshader -> shader [deprecated 7.16]
include/raytrace.h
	rt_prep_timer() -> bu_timer() [deprecated 7.16]
	rt_get_timer() -> bu_elapsed() [deprecated 7.16]

7.14
----
mged
	src/tclscripts/mged/bots.tcl [deprecated 7.14]

7.12
----
include/raytrace.h
	rt_functab size -> growing ft_label and new callbacks [deprecated 7.12]
src/rt/viewarea.c
	terminology and output format [deprecated 7.12]

pre 7.0
-------
include/raytrace.h
	struct hit.hit_point -> RT_HIT_POINT [deprecated pre-7.0]
	struct hit.hit_normal -> RT_HIT_NORMAL [deprecated pre-7.0]


**********************************************************************
***                       OBSOLETED CHANGES                        ***
**********************************************************************
                    (reverse chronological order)

7.38.0
------
burst
	Point Burst Damage Assessment Model (PDAM) input preparation
	tool.  Obsolete, no longer in use by upstream tools,
	removed [deprecated 7.32]

libtermio, libcursor
	Public API scope reduction - any client code that needs
	to interact with the terminal at these levels should handle
	what is needed locally. [deprecated 7.28]

7.34.0
------
nirt
	Behavior available under the --old flag [deprecated 7.30]

7.30.2
------
ray tracing tools
	lgt : functionally replaced by nirt
	rtcell', rtfrac', rtpp, rtrad', rtrange, rtray, rtregis
	Removed as part of distillation effort [deprecated 7.26]
converter tools
	cy-g, euclid-g, euclid_format', euclid_unformat', g-euclid,
	g-euclid1', g-tankill, intaval-g.py, viewpoint-g : obsolete formats
	plot3-X, plot3-hpgl, plot3-tek : obsolete interface, see overlay command
	plot3debug, xyz-plot3 : see plot3-asc,asc-plot3
	bot-bldxf', bot_shell-vtk, g-nmg, nmg-bot, nmg-rib, nmg-sgp',
	poly-bot, rt_bot_faces, : primitive-specific converters
	Removed as part of distillation effort [deprecated 7.26]
image tools
	cmap-fb, fb-cmap, fbcmrot : colormap support obsolete
	fbed, cell-fb : outside scope
	fbscanplot, polar-fb, bw-imp, pixinfo.sh : obsolete
	png_info : incorporating into icv
	pix-yuv', yuv-pix' : obsolete non-standard format
	texturescale : obsolete implementation
        pixcut, pixpaste : license, copyright cleanup
	Removed as part of distillation effort [deprecated 7.26]
video & animation tools
	anim_*', fbanim, chan_add', chan_mult, chan_permute,
	pixflip-fb' : outside scope
	pixfields', pixfieldsep' : outside scope
	orbit.sh, rtwalk, scriptsort, script-tab', tabinterp, tabsup,
	azel, bary
	Removed as part of distillation effort [deprecated 7.26]
infrared & shapefactor tools
	all_sf', if-X, ifdisp, pictx, showterm, firpass, secpass, shapefact
	Removed as part of distillation effort [deprecated 7.26]
misc tools
	fix_polysolids' : obsolete primitive
	remapid : superseded by reid+remat
	buffer : unnecessary network/stream buffering tool
	hex : superseded by hexdump
	Removed as part of distillation effort [deprecated 7.26]
fb-rle, rle-fb, bw-rle, pix-rle, rle-pix
	All tools focused specifically on the RLE image format. [deprecated 7.26]
burst
	remove termlib-based interactive menu interface [deprecated 7.26]
include/bu/hash.h
	bu_hash_tbl_find, bu_set_hash_value, bu_get_hash_value,
	bu_get_hash_key, bu_hash_tbl_add, bu_hash_tbl_print,
	bu_hash_tbl_free, bu_hash_tbl_first, bu_hash_tbl_next,
	bu_hash_tbl_traverse, bu_hash_record.  public structs
	bu_hash_entry and bu_hash_tbl will be made private.
        Replaced with new API [deprecated 7.26]

7.30.0
------
fbed, pp-fb
	removes termcap use, no known users [deprecated 7.24]
src/irprep
	all_sf, firpass, ir-X, irdisp, pictx, secpass, shapefact, showterm [deprecated 7.24]
include/raytrace librt
	db_full_path_list_add(), db_free_full_path_list() [deprecated 7.24]
	db_search_formplan(), db_search_freeplan(), db_search_full_paths() [deprecated 7.24]
	db_search_unique_objects(), struct db_full_path_list [deprecated 7.24]
	db_regexp_match() -> !bu_fnmatch() [deprecated 7.20]
	db_regexp_match_all() -> db_ls() [deprecated 7.26]
mged
	em, e_muves, l_muves, lm, read_muves, and t_muves MUVES-specific commands [deprecated 7.22]
	ps command renamed to postscript [minimally impacting]
include/bu.h
	bu_parse_mm() [deprecated 7.22]

7.28.0
------
rt -f framerate
	removed [minimally impacting]
pixdsplit, rt -d
	removed, broken tool [minimally impacting]
libmultispectral, rttherm, ssamp-bw, ssampview, ssampview.tcl
	removed, broken tools [minimally impacting]
dem-g
	removed, superseded by gcv+GDAL [minimally impacting]

7.26.0
------
dbcp
	dbcp -> dd [deprecated 7.18]
pov (mged)
	removed, undocumented command with many alternatives [minimally impacting]
polybinout (mged)
	removed, undocumented command, use plot [minimally impacting]
pl (mged)
	removed, use plot [minimally impacting]
conf.h
	removed - replaced with common.h [deprecated 7.0]
UtahRLE image tools
	no longer installed by default with BRL-CAD - not used directly by
	BRL-CAD tools [minimally impacting]
Tcl in libbu and libbn
	no longer utilize or require Tcl [dependency eliminated]
Tcl/Tk man pages
	no longer installed by default with BRL-CAD when the bundled Tcl/Tk is used
	to build [minimally impacting]
include/dg.h
	implementation detail no longer being exposed, use libged [deprecated 7.22]
autogen.sh && configure
	GNU Autotools build system -> CMake build system [deprecated 7.20]
Dunn camera and Canon printer tools
	dunncolor [deprecated 7.16]
	dunnsnap [deprecated 7.16]
	canonize [deprecated 7.16]
genptr_t/GENPTR_NULL
	genptr_t -> void* [deprecated 7.16]
include/bu.h
	bu_argv0() -> bu_basename(bu_argv0_full_path(), NULL) [deprecated 7.16]
include/dm_color.h
	dm_color.h -> dm.h [deprecated 7.14]
include/fb.h
	FB_WPIXEL -> fb_wpixel [deprecated 7.14]
include/raytrace.h
	rt_fdiff -> NEAR_ZERO [deprecated 7.14]
	rt_reldiff -> NEAR_ZERO [deprecated 7.14]
	DIR_* -> RT_DIR_* [deprecated 7.14]
	RT_HIT_NORM -> RT_HIT_NORMAL [deprecated 7.12]
include/vmath.h
	VADD2_2D -> V2ADD2 [deprecated 7.14]
	VSUB2_2D -> V2SUB2 [deprecated 7.14]
	MAGSQ_2D -> MAG2SQ [deprecated 7.14]
	VDOT_2D -> V2DOT [deprecated 7.14]
	VMOVE_2D -> V2MOVE [deprecated 7.14]
	VSCALE_2D -> V2SCALE [deprecated 7.14]
	VJOIN1_2D -> V2JOIN1 [deprecated 7.14]
liborle
include/orle.h
	remove liborle and the tools using it, fb-orle, orle-fb, orle-pix and
	pix-orle [deprecated 7.20]
mged
	make_bb -> bb [deprecated 7.16]
	tops -g -u -> now default behavior [deprecated 7.14]
	-n option -> -c option [deprecated 7.14]
	per_line [deprecated 7.14]
SGI-specific tools
	pl-sgi -> pl-fb [deprecated 7.16]
src/gtools
	g_diff, g_lint, g_qa, g_transfer -> gdiff, glint, gqa, gtransfer [deprecated 7.14]
src/librt/cmd.c
	rt_split_cmd() -> bu_argv_from_string() [deprecated 7.12]
any-png.sh
	use pix tools [deprecated 7.16]
cadbug.sh
	use sf.net tracker [deprecated 7.16]
cray.sh
	obsolete hardware [deprecated 7.16]
pixwrite.sh
	obsolete hardware [deprecated 7.16]
pixread.sh
	obsolete hardware [deprecated 7.16]
sgisnap.sh
	obsolete hardware [deprecated 7.16]
librtserver and Java Native Interface (JNI) bindings
	removed, unused and undocumented, modern approach would be to
	use a tool such as swig to generate bindings [minimally impacting]

7.24.2
------
.pl file suffix
	.pl -> .plot3 [deprecated 7.16]
*-pl
	*-pl -> *-plot3 [deprecated 7.16]
pl*
	pl* -> plot3* [deprecated 7.16]

7.24.0
------
include/bu.h
	bu_get_public_cpus() [deprecated 7.16]
	bu_get_load_average() [deprecated 7.12]
	bu_fopen_uniq() -> fopen() [deprecated 7.14]
src/other/jove
	jove -> emacs [deprecated 7.14]

7.22.0
------
include/bu.h
	%S format specifier -> %V format specifier for bu_vls [deprecated 7.14]

7.20.2
------
cat-fb
	obsolete hardware
include/vmath.h
	ELEMENTS_PER_PT -> ELEMENTS_PER_POINT [deprecated 7.12]
	HVECT_LEN -> ELEMENTS_PER_HVECT [deprecated 7.12]
	HPT_LEN -> ELEMENTS_PER_HPOINT [deprecated 7.12]

7.20.0
------
include/bu.h
	bu_mro and related macros -> bu_attribute_value_set

7.18.2
------
include/raytrace.h
	RT_HIT_NORM -> RT_HIT_NORMAL [deprecated pre-7.0]
g-shell.rect
	g-shell.rect renamed to g-shell-rect [minor tool rename]

7.18.0
------
include/raytrace.h
	db_free_external -> bu_free_external [deprecated pre-7.0]
include/wdb.h
	mk_fastgen_region() -> mk_comb() [deprecated 7.12]
src/librt/bomb.c
	rt_bomb() -> bu_bomb() [deprecated 7.10]
include/machine.h
	machine.h -> common.h && bu.h [deprecated 7.10]
src/vas4
	vas4 [deprecated 7.12]

7.16.4
------
include/raytrace.h
	get_solidbitv() -> rt_get_solidbitv() [deprecated 7.16]

7.14.4
------
include/pkg.h
	uses size_t for lengths in API calls
include/bu.h
	bu_association() [unused]

7.14.0
------
include/raytrace.h
	GET_HITMISS -> NMG_GET_HITMISS
mged
	edcolor -> color -e
include/vmath.h
	PI -> M_PI
	M_SQRT2_DIV2 -> M_SQRT1_2

7.12.6
------
mged
	binary -> bo [rename]

7.12.4
------
include/mater.h
	rt_material_head -> rt_material_head()  [deprecated 7.12]
include/raytrace.h
	removed iterator from NMG_CK_HITMISS_LIST
include/bu.h
	BU_QFLSTR -> BU_FLSTR

7.12.2
------
include/wdb.h
	mk_trc() -> mk_trc_h() and mk_trc_top() [deprecated pre-7.0]
	mk_bsolid() [deprecated pre-7.0]
	mk_bsurf() [deprecated pre-7.0]
	mk_strsol() -> mk_dsp(), mk_ebm(), mk_vol(), mk_submodel() [deprecated pre-7.0]
	mk_rcomb(), mk_fcomb(), mk_memb() -> mk_lcomb() and mk_addmember() [deprecated pre-7.0]
	mk_fwrite_internal() [deprecated pre-7.0]

7.12.0
------
include/common.h
	NATURAL_IEEE -> bu_byteorder() == BU_BIG_ENDIAN || defined(WORDS_BIGENDIAN)
	REVERSE_IEEE -> bu_byteorder() == BU_LITTLE_ENDIAN
include/bu.h
	bu_log(char *, ...) -> bu_log(const char *, ...) [const]
	bu_flog(FILE *, char *, ...) -> bu_flog(FILE *, const char *, ...) [const]
	bu_vls_printf(struct bu_vls *, char *) -> bu_vls_printf(struct bu_vls *, const char *) [const]
	bu_vls_sprintf(struct bu_vls *, char *) -> bu_vls_sprintf(struct bu_vls *, const char *) [const]
include/wdb.h
	removed mk_poly() [deprecated pre-7.0]
	removed mk_polysolid() [deprecated pre-7.0]
	removed mk_fpoly() [deprecated pre-7.0]
	removed write_shell_as_polysolid() [deprecated 6.0]
include/bu.h
	char *bu_brlcad_path() -> const char *bu_brlcad_path() [const]
include/bn.h
	bn_mat_zero() -> MAT_ZERO() [deprecated pre-7.0]
	bn_mat_idn() -> MAT_IDN() [deprecated pre-7.0]
	bn_mat_copy() -> MAT_COPY() [deprecated pre-7.0]
include/compat4.h
	compat4.h -> bu.h && bn.h [deprecated 5.0]
include/raytrace.h
	rt_overlap_quietly() -> struct application.a_logoverlap = rt_silent_logoverlap [deprecated pre 7.0]
include/bu.h
	bu_brlcad_path() -> bu_brlcad_root() || bu_brlcad_data() [deprecated 7.4]
	bu_tcl_brlcad_path() -> bu_tcl_brlcad_root() || bu_tcl_brlcad_data() [deprecated 7.4]
include/fb.h
	fb_log(char *fmt) -> fb_log(const char *fmt) [const]
include/noalias-prag.h
	removed [non-stdc]
include/noalias.h
	removed [non-stdc]
src/librt/wdb_obj.c -> src/librt/db_obj.c
	removed wdb_tree_cmd(), added dgo_tree_cmd() [rename]
mged
	dbbinary -> binary [rename]

7.10.4
------
include/msr.h [pre 7.0]
	msr.h -> bu.h
include/rtlist.h [pre 7.0]
	rtlist.h -> bu.h
include/rtstring.h [pre 7.0]
	rtstring.h -> bu.h
include/shortvect.h [pre 7.0]
include/shortvect-pr.h [pre 7.0]

7.10.2
------
include/raytrace.h
	rt_version -> rt_version() [private]
include/[library].h (several)
	[library]_version -> [library]_version() [private]


**********************************************************************
***                  MINIMALLY IMPACTING CHANGES                   ***
**********************************************************************
                    (forward chronological order)

All minimally impacting changes are listed by release as regular
expressions.  Unless noted otherwise, expressions are shown using Perl
syntax (i.e., the '(', ')', and '|' characters pertain to
subexpression captures, escaping with '\' matches literally.
Expressions should apply via:

perl -0777 -pi -e 'EXPRESSION' FILE

To apply an expression to an entire source tree, the following pattern
may work:

find . -type f -not -path "*.git/*" -regex '.*\(c\|cpp\|cxx\|h\|hpp\)$' -exec perl -0777 -pi -e 'EXPRESSION' {} \;

find src \( -name '*.c' -or -name '*.cxx' -or -name '*.cpp' -or -name '*.h' -or -name '*.hxx' -or -name '*.hpp' -or -name '*.java' -or -name '*.f' -or -name '*.sh' -or -name '*.tcl' -or -name '*.tk' -or -name '*.itcl' -or -name '*.itk' -or -name '*.pl' -or -name '*.php' -or -name '*.inc' -or -name '*.mged' -or -name '*.y' -or -name '*.l' -or -name '*.yy' \) -not \( -name other -or -regex '.*/other/.*' -or -name tools -or -regex '.*/misc/tools/.*' -or -regex '.*/\.[^\.].*' -or -regex '.*~' -or -regex '.*/#.*' \)

Expressions are minimally tested, use with caution.  Make a backup.


6.0 (sed lines)
---
g/struct structparse/s//struct bu_structparse/g
g/struct rt_mapped_file/s//struct bu_mapped_file/g
g/struct rt_list/s//struct bu_list/g
g/struct histogram/s//struct bu_hist/g
g/complex	/s//bn_complex_t	/g
g/GETSTRUCT/s//BU_GETSTRUCT/g
g/GETUNION/s//BU_GETUNION/g
g/nmg_tbl.*(\(.*\), TBL_INIT[ ]*, \(.*\))/s//bu_ptbl_init(\1, 64, "\1")/
g/nmg_tbl.*(\(.*\), TBL_RST[ ]*, \(.*\))/s//bu_ptbl_reset(\1)/
g/nmg_tbl.*(\(.*\), TBL_INS[ ]*, \(.*\))/s//bu_ptbl_ins(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_LOC[ ]*, \(.*\))/s//bu_ptbl_locate(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_ZERO[ ]*, \(.*\))/s//bu_ptbl_zero(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_INS_UNIQUE[ ]*, \(.*\))/s//bu_ptbl_ins_unique(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_RM[ ]*, \(.*\))/s//bu_ptbl_rm(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_CAT[ ]*, \(.*\))/s//bu_ptbl_cat(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_FREE[ ]*, \(.*\))/s//bu_ptbl_free(\1)/
g/nmg_tbl/s//bu_ptbl/g
g/nmg_ptbl/s//bu_ptbl/g
g/MSR_UNIF/s//BN_UNIF/g
g/MSR_GAUSS/s//BN_GAUSS/g
g/MSR_CK/s//BU_CK/g
g/msr_unif/s//bn_unif/g
g/msr_gauss/s//bn_gauss/g
g/RT_CKMAG/s//BU_CKMAG/g
g/RT_TOL_MAGIC/s//BN_TOL_MAGIC/g
g/RT_CK_TOL/s//BN_CK_TOL/g
g/RT_VECT_ARE_PARALLEL/s//BN_VECT_ARE_PARALLEL/g
g/RT_VECT_ARE_PERP/s//BN_VECT_ARE_PERP/g
g/rt_badmagic/s//bu_badmagic/g
g/RT_SETJUMP/s//BU_SETJUMP/g
g/RT_UNSETJUMP/s//BU_UNSETJUMP/g
g/rt_twopi/s//bn_twopi/g
g/rt_halfpi/s//bn_halfpi/g
g/rt_quarterpi/s//bn_quarterpi/g
g/rt_invpi/s//bn_invpi/g
g/rt_inv2pi/s//bn_inv2pi/g
g/rt_inv4pi/s//bn_inv4pi/g
g/rt_inv255/s//bn_inv255/g
g/rt_degtorad/s//bn_degtorad/g
g/rt_radtodeg/s//bn_radtodeg/g
g/RT_HISTOGRAM_MAGIC/s//BU_HIST_MAGIC/g
g/RT_CK_HISTOGRAM/s//BU_CK_HIST/g
g/RT_HISTOGRAM_TALLY/s//BU_HIST_TALLY/g
g/rt_hist_free/s//bu_hist_free/g
g/rt_hist_init/s//bu_hist_init/g
g/rt_hist_range/s//bu_hist_range/g
g/rt_hist_pr/s//bu_hist_pr/g
g/RT_LIST_HEAD_MAGIC/s//BU_LIST_HEAD_MAGIC/g
g/RT_LIST_NULL/s//BU_LIST_NULL/g
g/RT_LIST_INSERT/s//BU_LIST_INSERT/g
g/RT_LIST_APPEND/s//BU_LIST_APPEND/g
g/RT_LIST_DEQUEUE/s//BU_LIST_DEQUEUE/g
g/RT_LIST_PUSH/s//BU_LIST_PUSH/g
g/RT_LIST_POP/s//BU_LIST_POP/g
g/RT_LIST_INSERT_LIST/s//BU_LIST_INSERT_LIST/g
g/RT_LIST_APPEND_LIST/s//BU_LIST_APPEND_LIST/g
g/RT_LIST_IS_EMPTY/s//BU_LIST_IS_EMPTY/g
g/RT_LIST_NON_EMPTY/s//BU_LIST_NON_EMPTY/g
g/RT_LIST_NON_EMPTY_P/s//BU_LIST_NON_EMPTY_P/g
g/RT_LIST_IS_CLEAR/s//BU_LIST_IS_CLEAR/g
g/RT_LIST_UNINITIALIZED/s//BU_LIST_UNINITIALIZED/g
g/RT_LIST_INIT/s//BU_LIST_INIT/g
g/RT_LIST_MAGIC_SET/s//BU_LIST_MAGIC_SET/g
g/RT_LIST_MAGIC_OK/s//BU_LIST_MAGIC_OK/g
g/RT_LIST_MAGIC_WRONG/s//BU_LIST_MAGIC_WRONG/g
g/RT_LIST_IS_HEAD/s//BU_LIST_IS_HEAD/g
g/RT_LIST_NOT_HEAD/s//BU_LIST_NOT_HEAD/g
g/RT_CK_LIST_HEAD/s//BU_CK_LIST_HEAD/g
g/RT_LIST_NEXT_IS_HEAD/s//BU_LIST_NEXT_IS_HEAD/g
g/RT_LIST_NEXT_NOT_HEAD/s//BU_LIST_NEXT_NOT_HEAD/g
g/RT_LIST_FOR2/s//BU_LIST_FOR2/g
g/RT_LIST_FOR/s//BU_LIST_FOR/g
g/RT_LIST_WHILE/s//BU_LIST_WHILE/g
g/RT_LIST_FIRST_MAGIC/s//BU_LIST_FIRST_MAGIC/g
g/RT_LIST_LAST_MAGIC/s//BU_LIST_LAST_MAGIC/g
g/RT_LIST_PNEXT_PNEXT/s//BU_LIST_PNEXT_PNEXT/g
g/RT_LIST_PNEXT_PLAST/s//BU_LIST_PNEXT_PLAST/g
g/RT_LIST_PLAST_PNEXT/s//BU_LIST_PLAST_PNEXT/g
g/RT_LIST_PLAST_PLAST/s//BU_LIST_PLAST_PLAST/g
g/RT_LIST_PNEXT_CIRC/s//BU_LIST_PNEXT_CIRC/g
g/RT_LIST_PPREV_CIRC/s//BU_LIST_PPREV_CIRC/g
g/RT_LIST_PLAST_CIRC/s//BU_LIST_PPREV_CIRC/g
g/RT_LIST_MAIN_PTR/s//BU_LIST_MAIN_PTR/g
g/RT_LIST_PNEXT/s//BU_LIST_PNEXT/g
g/RT_LIST_PLAST/s//BU_LIST_PLAST/g
g/RT_LIST_LAST/s//BU_LIST_LAST/g
g/RT_LIST_PREV/s//BU_LIST_PREV/g
g/RT_LIST_FIRST/s//BU_LIST_FIRST/g
g/RT_LIST_NEXT/s//BU_LIST_NEXT/g
g/rt_log/s//bu_log/g
g/rt_add_hook/s//bu_add_hook/g
g/rt_delete_hook/s//bu_delete_hook/g
g/rt_putchar/s//bu_putchar/g
g/rt_flog/s//bu_flog/g
g/rt_identify_magic/s//bu_identify_magic/g
g/rt_identity/s//bn_mat_identity/g
g/rt_prmem/s//bu_prmem/g
g/rt_strdup/s//bu_strdup/g
g/rt_malloc/s//bu_malloc/g
g/rt_calloc/s//bu_calloc/g
g/rt_free/s//bu_free/g
g/rt_byte_roundup/s//bu_malloc_len_roundup/g
g/rt_mem_barriercheck/s//bu_mem_barriercheck/g
g/rt_open_mapped_file/s//bu_open_mapped_file/g
g/rt_close_mapped_file/s//bu_close_mapped_file/g
g/RT_CK_MAPPED_FILE/s//BU_CK_MAPPED_FILE/g
g/noise_init/s//bn_noise_init/g
g/noise_perlin/s//bn_noise_perlin/g
g/noise_vec/s//bn_noise_vec/g
g/noise_fbm/s//bn_noise_fbm/g
g/noise_turb/s//bn_noise_turb/g
g/rt_pri_set/s//bu_nice_set/g
g/rt_cpuget/s//bu_cpulimit_get/g
g/rt_cpuset/s//bu_cpulimit_set/g
g/rt_avail_cpus/s//bu_avail_cpus/g
g/rt_parallel/s//bu_parallel/g
g/rt_struct_export/s//bu_struct_export/g
g/rt_struct_import/s//bu_struct_import/g
g/rt_struct_put/s//bu_struct_put/g
g/rt_struct_get/s//bu_struct_get/g
g/rt_gshort/s//bu_gshort/g
g/rt_glong/s//bu_glong/g
g/rt_pshort/s//bu_pshort/g
g/rt_plong/s//bu_plong/g
g/rt_struct_buf/s//bu_struct_wrap_buf/g
g/rt_structparse/s//bu_struct_parse/g
g/rt_structprint/s//bu_struct_print/g
g/rt_vls_structprint/s//bu_vls_struct_print/g
g/offsetofarray/s//bu_offsetofarray/g
g/ FUNC_NULL/s// BU_STRUCTPARSE_FUNC_NULL/g
g/rt_external/s//bu_external/g
g/RT_EXTERNAL_MAGIC/s//BU_EXTERNAL_MAGIC/g
g/RT_EXTERN/s//BU_EXTERN/g
g/RT_INIT_EXTERNAL/s//BU_INIT_EXTERNAL/g
g/RT_CK_EXTERNAL/s//BU_CK_EXTERNAL/g
g/rt_dist_pt3_lseg3/s//bn_dist_pt3_lseg3/g
g/rt_3pts_collinear/s//bn_3pts_collinear/g
g/rt_pt3_pt3_equal/s//bn_pt3_pt3_equal/g
g/rt_dist_pt2_lseg2/s//bn_dist_pt2_lseg2/g
g/rt_isect_lseg3_lseg3/s//bn_isect_lseg3_lseg3/g
g/rt_isect_line3_line3/s//bn_isect_line3_line3/g
g/rt_2line3_colinear/s//bn_2line3_colinear/g
g/rt_isect_pt2_lseg2/s//bn_isect_pt2_lseg2/g
g/rt_isect_line2_lseg2/s//bn_isect_line2_lseg2/g
g/rt_isect_lseg2_lseg2/s//bn_isect_lseg2_lseg2/g
g/rt_isect_line2_line2/s//bn_isect_line2_line2/g
g/rt_dist_line_point/s//bn_dist_line3_pt3/g
g/rt_dist_pt3_pt3/s//bn_dist_pt3_pt3/g
g/rt_3pts_distinct/s//bn_3pts_distinct/g
g/rt_mk_plane_3pts/s//bn_mk_plane_3pts/g
g/rt_mkpoint_3planes/s//bn_mkpoint_3planes/g
g/rt_isect_line3_plane/s//bn_isect_line3_plane/g
g/rt_isect_2planes/s//bn_isect_2planes/g
g/rt_isect_2lines/s//bn_isect_2lines/g
g/rt_isect_line_lseg/s//bn_isect_line_lseg/g
g/rt_dist_line3_pt3/s//bn_dist_line3_pt3/g
g/rt_distsq_line3_pt3/s//bn_distsq_line3_pt3/g
g/rt_dist_line_origin/s//bn_dist_line_origin/g
g/rt_dist_line2_point2/s//bn_dist_line2_point2/g
g/rt_distsq_line2_point2/s//bn_distsq_line2_point2/g
g/rt_area_of_triangle/s//bn_area_of_triangle/g
g/rt_isect_pt_lseg/s//bn_isect_pt_lseg/g
g/rt_dist_pt_lseg/s//bn_dist_pt_lseg/g
g/rt_rotate_bbox/s//bn_rotate_bbox/g
g/rt_rotate_plane/s//bn_rotate_plane/g
g/rt_coplanar/s//bn_coplanar/g
g/rt_angle_measure/s//bn_angle_measure/g
g/rt_dist_pt3_along_line3/s//bn_dist_pt3_along_line3/g
g/rt_dist_pt2_along_line2/s//bn_dist_pt2_along_line2/g
g/rt_between/s//bn_between/g
g/rt_printb/s//bu_printb/g
g/NMG_CK_PTBL/s//BU_CK_PTBL/g
g/NMG_TBL_BASEADDR/s//BU_PTBL_BASEADDR/g
g/NMG_TBL_LASTADDR/s//BU_PTBL_LASTADDR/g
g/NMG_TBL_END/s//BU_PTBL_END/g
g/NMG_TBL_GET/s//BU_PTBL_GET/g
g/RT_RAND_TABSIZE/s//BN_RAND_TABSIZE/g
g/RT_RANDSEED/s//BN_RANDSEED/g
g/RT_RANDOM/s//BN_RANDOM/g
g/rt_rand_table/s//bn_rand_table/g
g/rt_tol/s//bn_tol/g
g/RES_ACQUIRE(/s//bu_semaphore_acquire(/
g/RES_RELEASE(/s//bu_semaphore_release(/
g/&rt_g.res_syscall/s//BU_SEM_SYSCALL/
g/&rt_g.res_worker/s//RT_SEM_WORKER/
g/&rt_g.res_stats/s//RT_SEM_STATS/
g/&rt_g.res_results/s//RT_SEM_RESULTS/
g/&rt_g.res_model/s//RT_SEM_MODEL/
g/RES_INIT(/s/RES_INIT.*;/bu_semaphore_init( RT_SEM_LAST );/p
g/RT_VLS_CHECK/s//BU_CK_VLS/g
g/RT_VLS_ADDR/s//bu_vls_addr/g
g/RT_VLS_INIT/s//bu_vls_init/g
g/rt_vls_init/s//bu_vls_init/g
g/rt_vls_vlsinit/s//bu_vls_vlsinit/g
g/rt_vls_addr/s//bu_vls_addr/g
g/rt_vls_strdup/s//bu_vls_strdup/g
g/rt_vls_strgrab/s//bu_vls_strgrab/g
g/rt_vls_extend/s//bu_vls_extend/g
g/rt_vls_setlen/s//bu_vls_setlen/g
g/rt_vls_strlen/s//bu_vls_strlen/g
g/rt_vls_trunc/s//bu_vls_trunc/g
g/rt_vls_trunc2/s//bu_vls_trunc2/g
g/rt_vls_nibble/s//bu_vls_nibble/g
g/rt_vls_free/s//bu_vls_free/g
g/rt_vls_vlsfree/s//bu_vls_vlsfree/g
g/rt_vls_strcpy/s//bu_vls_strcpy/g
g/rt_vls_strncpy/s//bu_vls_strncpy/g
g/rt_vls_strcat/s//bu_vls_strcat/g
g/rt_vls_strncat/s//bu_vls_strncat/g
g/rt_vls_vlscat/s//bu_vls_vlscat/g
g/rt_vls_vlscatzap/s//bu_vls_vlscatzap/g
g/rt_vls_from_argv/s//bu_vls_from_argv/g
g/rt_vls_fwrite/s//bu_vls_fwrite/g
g/rt_vls_gets/s//bu_vls_gets/g
g/rt_vls_putc/s//bu_vls_putc/g
g/rt_vls_printf/s//bu_vls_printf/g
g/CxCopy/s//bn_cx_copy/g
g/CxNeg/s//bn_cx_neg/g
g/CxReal/s//bn_cx_real/g
g/CxImag/s//bn_cx_imag/g
g/CxAdd/s//bn_cx_add/g
g/CxAmplSq/s//bn_cx_amplsq/g
g/CxAmpl/s//bn_cx_ampl/g
g/CxConj/s//bn_cx_conj/g
g/CxCons/s//bn_cx_cons/g
g/CxPhas/s//bn_cx_phas/g
g/CxScal/s//bn_cx_scal/g
g/CxSub/s//bn_cx_sub/g
g/CxMul/s//bn_cx_mul/g
g/CxMul2/s//bn_cx_mul2/g
g/CxDiv/s//bn_cx_div/g
g/rt_poly_scale/s//bn_poly_scale/g
g/rt_pr_poly/s//bn_pr_poly/g
g/rt_pr_roots/s//bn_pr_roots/g
g/TBL_INIT/s//BU_PTBL_INIT/g
g/TBL_INS/s//BU_PTBL_INS/g
g/TBL_LOC/s//BU_PTBL_LOC/g
g/TBL_FREE/s//BU_PTBL_FREE/g
g/TBL_RST/s//BU_PTBL_RST/g
g/TBL_CAT/s//BU_PTBL_CAT/g
g/TBL_RM/s//BU_PTBL_RM/g
g/TBL_INS_UNIQUE/s//BU_PTBL_INS_UNIQUE/g
g/TBL_ZERO/s//BU_PTBL_ZERO/g
g/rt_pi/s//bn_pi/g
g/matXvec/s//bn_matXvec/g
g/mat_ae/s//bn_mat_ae/g
g/mat_ae_vec/s//bn_ae_vec/g
g/mat_aet_vec/s//bn_aet_vec/g
g/mat_angles/s//bn_mat_angles/g
g/mat_arb_rot/s//bn_mat_arb_rot/g
g/mat_atan2/s//bn_atan2/g
g/mat_copy/s//bn_mat_copy/g
g/mat_degtorad/s//bn_degtorad/g
g/mat_dup/s//bn_mat_dup/g
g/mat_eigen2x2/s//bn_eigen2x2/g
g/mat_fromto/s//bn_mat_fromto/g
g/mat_htov_move/s//bn_htov_move/g
g/mat_identity/s//bn_mat_identity/g
g/mat_idn/s//MAT_IDN/g
g/mat_inv/s//bn_mat_inv/g
g/rt_mat_is_equal/s//bn_mat_is_equal/g
g/mat_is_identity/s//bn_mat_is_identity/g
g/mat_lookat/s//bn_mat_lookat/g
g/mat_mul/s//bn_mat_mul/g
g/mat_mul2/s//bn_mat_mul2/g
g/mat_print/s//bn_mat_print/g
g/mat_radtodeg/s//bn_radtodeg/g
g/mat_scale_about_pt/s//bn_mat_scale_about_pt/g
g/mat_trn/s//bn_mat_trn/g
g/mat_vec_ortho/s//bn_vec_ortho/g
g/mat_vec_perp/s//bn_vec_perp/g
g/mat_vtoh_move/s//bn_vtoh_move/g
g/mat_xform_about_pt/s//bn_mat_xform_about_pt/g
g/mat_xrot/s//bn_mat_xrot/g
g/mat_yrot/s//bn_mat_yrot/g
g/mat_zrot/s//bn_mat_zrot/g
g/mat_zero/s//bn_mat_zero/g
g/rb_tree/s//bu_rb_tree/g
g/RB_TREE_NULL/s//BU_RB_TREE_NULL/g
g/rb_min/s//bu_rb_min/g
g/rb_max/s//bu_rb_max/g
g/rb_pred/s//bu_rb_pred/g
g/rb_succ/s//bu_rb_succ/g
g/rb_create/s//bu_rb_create/g
g/rb_create1/s//bu_rb_create1/g
g/rb_delete/s//bu_rb_delete/g
g/rb_diagnose_tree/s//bu_rb_diagnose_tree/g
g/rb_extreme/s//bu_rb_extreme/g
g/rb_insert/s//bu_rb_insert/g
g/rb_neighbor/s//bu_rb_neighbor/g
g/rb_search/s//bu_rb_search/g
g/rb_search1/s//bu_rb_search1/g
g/rb_summarize_tree/s//bu_rb_summarize_tree/g
g/rb_walk/s//bu_rb_walk/g
g/rb_walk1/s//bu_rb_walk1/g
g/RT_VLIST_CHUNK/s//BN_VLIST_CHUNK/g
g/rt_vlist/s//bn_vlist/g
g/RT_VLIST_NULL/s//BN_VLIST_NULL/g
g/RT_VLIST_MAGIC/s//BN_VLIST_MAGIC/g
g/RT_CK_VLIST/s//BN_CK_VLIST/g
g/RT_VLIST_LINE_MOVE/s//BN_VLIST_LINE_MOVE/g
g/RT_VLIST_LINE_DRAW/s//BN_VLIST_LINE_DRAW/g
g/RT_VLIST_POLY_START/s//BN_VLIST_POLY_START/g
g/RT_VLIST_POLY_MOVE/s//BN_VLIST_POLY_MOVE/g
g/RT_VLIST_POLY_DRAW/s//BN_VLIST_POLY_DRAW/g
g/RT_VLIST_POLY_END/s//BN_VLIST_POLY_END/g
g/RT_VLIST_POLY_VERTNORM/s//BN_VLIST_POLY_VERTNORM/g
g/rt_vlblock/s//bn_vlblock/g
g/RT_VLBLOCK_MAGIC/s//BN_VLBLOCK_MAGIC/g
g/RT_CK_VLBLOCK/s//BN_CK_VLBLOCK/g
g/BU_BU_/s//BU_/g
g/bu_bu_/s//bu_/g
g/bn_bn_/s//bn_/g
g/bn_pipe/s//rt_pipe/g
	major API overhaul [6.0]
7.14
----
s/rt_db_free_internal\(([^,]+),[^\)]*\)/rt_db_free_internal(\1)/g
	struct resource pointer parameter removed [7.14]

7.16
----
s/rt_ptalloc\(\);/(struct rt_pt_node *)bu_malloc(sizeof(struct rt_pt_node), "rt_pt_node");/g
	rt_ptalloc() removed [7.16]

7.18
----
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_INIT([^\)]*)\)/bu_ptbl_init(\1, 64, "init")/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_RST([^\)]*)\)/bu_ptbl_reset(\1)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_INS([^\)]*)\)/bu_ptbl_ins(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_LOC([^\)]*)\)/bu_ptbl_locate(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_ZERO([^\)]*)\)/bu_ptbl_zero(\1\2/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_INS_UNIQUE([^\)]*)\)/bu_ptbl_ins_unique(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_RM([^\)]*)\)/bu_ptbl_rm(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_CAT([^\)]*)\)/bu_ptbl_cat(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_FREE([^\)]*)\)/bu_ptbl_free(\1)/g
	bu_ptbl() removed [7.18]

s/nmg_struct_counts\(/nmg_pr_m_struct_counts(/g
	nmg_struct_counts() renamed to nmg_pr_m_struct_counts() [7.18]

s/bu_vlb_getBuffer\(/bu_vlb_addr(/g
	bu_vlb_getBuffer() renamed to bu_vlb_addr() [7.18]

s/bu_vlb_getBufferLength\(/bu_vlb_buflen(/g
	bu_vlb_getBufferLength() renamed to bu_vlb_buflen() [7.18]

s/V2APPROXEQUAL\(/V2NEAR_EQUAL(/g
	V2APPROXEQUAL() renamed to V2NEAR_EQUAL() [7.18]

s/VAPPROXEQUAL\(/VNEAR_EQUAL(/g
	VAPPROXEQUAL() renamed to VNEAR_EQUAL() [7.18]

s/db_get_version\(/db_version(/g
	db_get_version() renamed to db_version() [7.18]

s/db_get_directory_size\(/db_directory_size(/g
	db_get_directory_size() renamed to db_directory_size() [7.18]

s/db_get_directory\(/db_alloc_directory_block(/g
	db_get_directory() renamed to db_alloc_directory_block() [7.18]

s/rt_get_seg\(/rt_alloc_sed_block(/g
	rt_get_seg() renamed to rt_alloc_seg_block() [7.18]

s/db_shader_mat\(/rt_shader_mat(/g
	db_shader_mat() renamed to rt_shader_mat() [7.18]

s/SMALL([^_])/SMALL_FAST\1/g
	SMALL renamed to SMALL_FASTF [7.18]

7.20
----
s/spm_([^\)]*)/bn_spm_\1/g
	spm functions and types renamed to bn_spm [7.20]

s/RT_CK_SPM/BN_CK_SPM_MAP/g
	RT_CK_SPM macro renamed to BN_CK_SPM MAP [7.20]

s/SPM_MAGIC/BN_SPM_MAGIC/g
	SPM_MAGIC renamed to BN_SPM_MAGIC [7.20]

s/SPM_NULL/BN_SPM_MAP_NULL/g
	SPM_NULL renamed to BN_SPM_MAP_NULL [7.20]

s/BU_EXTERN[[:space:]]*\([[:space:]]*([^,]*?)[[:space:]]*,[[:space:]]*\([[:space:]]*([^)]*)[[:space:]]*\)[[:space:]]*\)/extern \1(\2)/g
	BU_EXTERN() no longer necessary due to C89 minimum, use extern [7.20]

s/[[:space:]]*BU_ARGS[[:space:]]*\([[:space:]]*([^)]*[[:space:]]*)[[:space:]]*\)/\1/g
	BU_ARGS() no longer necessary due to C89 minimum, list args [7.20]

s/BU_LIST_UNINITIALIZED/!BU_LIST_IS_INITIALIZED/g
	BU_LIST_IS_INITIALIZED() removed for consistency [7.20]

s/BU_INIT_EXTERNAL/BU_EXTERNAL_INIT/g
	renamed for API consistency [7.20]

s/RT_CK_DBTR/RT_CK_DB_TRAVERSE/g
s/RT_DBTR_MAGIC/RT_DB_TRAVERSE_MAGIC/g
	renamed for API consistency [7.20]

s/RT_INIT_([A-Z_]*)/RT_\1_INIT/g
	renamed all RT_INIT_[type] macros to RT_[type]_INIT for API consistency [7.20]

s/BU_LIST_MAGIC_OK/BU_LIST_MAGIC_EQUAL/g
s/BU_LIST_MAGIC_WRONG/!BU_LIST_MAGIC_EQUAL/g
	renamed and consolidated to be consistent with libbn [7.20]

s/nmg_moveeu/nmg_je/g
	function has been renamed

7.22
----

s/rt_dist_pt3_line3/bn_dist_pt3_line3/g
s/rt_dist_line3_line3/bn_dist_line3_line3/g
s/rt_dist_line3_lseg3/bn_dist_line3_lseg3/g
	functions moved from librt to libbn [7.21]
s/bu_tcl_setup/Bu_Init/g
	removed bu_tcl_setup() in favor of Bu_Init() [7.21]
s/bu_tcl_([^(]*)\([^,]*?[[:space:]]*,[^,]*?[[:space:]]*,(.*)/bu_\1(\2/g
	removed all bu_tcl_*() functions, leaving off interp and using native bu function [7.21]
s/bu_badmagic_tcl\([^,]*?[[:space:]]*,(.*)/bu_badmagic(\1/g
	removed bu_badmagic_tcl() in favor of bu_badmagic() [7.21]
s/(.*)_CK(.*)_TCL\([^,]*?[[:space:]]*,(.*)/\1_CK\2(\3/g
	removed all *_CK*_TCL() macros (e.g., BU_CKMAG_TCL, RT_CK_DBI_TCL, etc.) in favor of non-TCL macros [7.21]
s/bu_image/icv_image/g
	moved bu_image* functions to libicv as icv_image* [7.21]
s/BU_IMAGE/ICV_IMAGE/g
	moved BU_IMAGE* macros to icv.h as ICV_IMAGE* [7.21]
s/bu_cmd\(([^,]*?),[[:space:]]*([^,]*?),[[:space:]]*([^,]*?),[[:space:]]*([^,)]*?),[[:space:]]*([^)]*?)\)/bu_cmd(\4, \2, \3, \5, \1, NULL)/g
	inputs then outputs.  swapped bu_cmd's 4th parameter to 1st, 1st to 5th, and added a new return value hook last. [7.21]
s/V3(.*)_TOL\(([^,]*,)([^,]*,)([^,]*,)([^)]*)\)/V3\1_TOL(\1\2\3(\4)->dist)/g
	V3RPP_OVERLAP_TOL(), V3PT_IN_RPP_TOL(), and V3PT_OUT_RPP_TOL() tol parameter changed to value [7.21]
s/BU_GETSTRUCT\([[:space:]]*([^,)]+,)[[:space:]]*([^)]+)[[:space:]]*\)/BU_GET(\1 struct \2)/g
	BU_GETSTRUCT(ptr, struct_type) changed to BU_GET(ptr, struct struct_t) [7.21]
s/BU_GETUNION\([[:space:]]*([^,)]+,)[[:space:]]*([^)]+)[[:space:]]*\)/BU_GET(\1 union \2)/g
s/BU_GETTYPE\([[:space:]]*([^,)]+,)[[:space:]]*([^)]+)[[:space:]]*\)/BU_GET(\1 \2)/g
	BU_GETUNION() and BU_GETTYPE() macros changed to BU_GET() [7.21]
s/CMD_NULL/BU_CMD_NULL/g
s/CMDHIST/BU_CMDHIST/g
	prefix the cmd.h defines with BU_ since they are part of libbu [7.21]
s/bu_shader_to_tcl_list/bu_shader_to_list/g
	renamed as it applies to any list in {} form, tcl or otherwise [7.21]
s/bu_(add|delete|call)_hook/bu_hook_\1/g
	renamed hook functions to be consistent with other libbu API [7.21]
s/bu_file_exists\(([^)]*)\)/bu_file_exists(\1, NULL)/g
	new file descriptor parameter added [7.21]
s/bu_list_path\(([^,]*),([^,]*),[[:space:]]([^)]*)\)/bu_dir_list(\1,\2, &(\3))/g
s/bu_count_path(.*)\);/bu_dir_list\1, NULL);/g
	made bu_dir_list() return the number of entries [7.21]
s/bu_strcmpm\((.*),([^,]*)\)/bu_strcmp(\1)/g
	no use for label parameter, convert to bu_strcmp() [7.21]
	bu_set_realtime() [deprecated 7.22]

7.24
----
s/bu_set_realtime\([[:space:]]\);//g
	didn't do anything [7.23]
s/.*bu_cpulimit_[sg]et\([[:space:]]\);//g
	didn't do anything [7.23]
s/rt_g\./RTG\./g
	renamed rt_g global to RTG so it doesn't match the struct name [7.24]
s/rt_functab\[/OBJ\[/g
	renamed rt_functab global to OBJ so it doesn't match the struct name [7.24]
s/redraw_vlist/draw/g
	removed redraw_vlist mged command, just call draw or refresh [7.24]
s/RT_BADNUM/INVALID/g
s/RT_BADVAL/VINVALID/g
	moved RT_BADNUM and RT_BADVEC to vmath.h as INVALID and VINVALID [7.24]
s/bu_create_hash_tbl/bu_hash_tbl_create/g
s/bu_find_hash_entry/bu_hash_tbl_find/g
s/bu_hash_add_entry/bu_hash_tbl_add/g
s/bu_hash_tbl_pr/bu_hash_tbl_print/g
	renamed for better consistency in hash table API and with other libbu API [7.24]
s/dm_applicationfocus\([[:space:]]*\);//g
	only useful in older os x versions, users can now do the same thing via XQuartz preferences [7.24]
s/bu_vls_trunc2/bu_vls_trunc/g
	removed duplicitous function in favor of more general version [7.24]
s/bn_pi/M_PI/g
s/bn_twopi/M_2PI/g
s/bn_halfpi/M_PI_2/g
s/bn_quarterpi/M_PI_4/g
s/bn_invpi/M_1_PI/g
s/bn_inv2pi/M_1_2PI/g
s/bn_inv4pi/M_1_4PI)/g
s/bn_inv255/(1.0 \/ 255.0)/g
s/bn_degtorad/DEG2RAD/g
s/bn_radtodeg/RAD2DEG/g
s/bn_sin_scale/(BN_SINTABSIZE \/ M_2PI)/g
	eliminated a number of libbn globals in favor of existing constants [7.24]
s/(#[[:space:]]*include[[:space:]]+["<])vfont-if\.h/\1bu\/vfont.h/g
s/(#[[:space:]]*include[[:space:]]+["<])cmd\.h/\1bu\/cmd.h/g
s/(#[[:space:]]*include[[:space:]]+["<])hist\.h/\1bu\/hist.h/g
s/(#[[:space:]]*include[[:space:]]+["<])magic\.h/\1bu\/magic.h/g
	library-specific public headers moved into a subdir [7.24]
s/([^_])([nh]to[hn][fd])/\1bu_cv_\2/g
	ntohf, ntohd, htonf, htond renamed with bu_cv_ prefix [7.24]

7.26
----
s/bu_kill_parallel\([[:space:]]*\);//g
	didn't do anything unless called from forked process, use bu_terminate() [7.25]
s/bu_jmpbuf/bu_jmpbuf[0]/g
s/bu_setjmp_valid/bu_setjmp_valid[0]/g
	can replace 0 with bu_parallel_id() to get thread-safe jumping [7.25]
s/bu_semaphore_reinit/bu_semaphore_init/g
	no longer need to manually reinitialize (or initialize) semaphores [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])fbio\.h/\1bu\/fb.h/g
	fbio.h is now part of fb.h [7.25]
s/UNION/'u'/g
s/SUBTRACT/'-'/g
s/INTERSECT/'+'/g
	old db.h db4 preprocessor symbols removed, use char or DB_OP_* [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])bselect\.h/\1bsocket.h/g
s/(#[[:space:]]*include[[:space:]]+["<])bin\.h/\1bnetwork.h/g
	rename bselect.h and bin.h public headers to be more declaratively named [7.25]
s/db5_enc_len\[(.*)\]/DB5_ENC_LEN(\1)/g
	replaced db5_enc_len[] global array with DB5_ENC_LEN() macro [7.25]
s/db_normalize/bu_normalize/g
	move the path normalization routine to libbu [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])bot\.h/\1rt\/primitives\/bot.h/g
	consolidate bot header contents [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])anim\.h/\1bn\/anim.h/g
	consolidate anim header contents [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])plot3\.h/\1bn.h/g
	plot3 implementation is in libbn, move header and replace plot3.h with bn.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])vectfont\.h/#define LAST -128\n\1bn\/vectfont.h/g
	consolidate vectfont.h files [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])spm\.h/\1bn\/spm.h/g
	move spm.h into bn subheader directory [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])dvec\.h/\1bn\/dvec.h/g
s/(#[[:space:]]*include[[:space:]]+["<])vector_fpu\.h/\1bn\/vector_fpu.h/g
s/(#[[:space:]]*include[[:space:]]+["<])vector_x86\.h/\1bn\/vector_x86.h/g
	move dvec.h and friends into bn subheader directory [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])db\.h/\1rt\/db4.h/g
	move db.h to rt/db4.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])db5\.h/\1rt\/db5.h/g
	move db5.h to rt/db5.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])mater\.h/\1raytrace.h/g
	merge mater.h with rt/mater.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])nurb\.h/#include "raytrace.h"\n\1rt\/nurb.h/g
	move nurb.h to rt/nurb.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])rtfunc\.h/#include "raytrace.h"\n\1rt\/func.h/g
	move rtfunc.h to rt/func.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])tol\.h/#include "bn.h"\n#include "raytrace.h"\n\1rt\/tol.h/g
	consolidate tol.h and rt/tol.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])tie\.h/\1rt\/tie.h/g
	move tie.h to rt/tie.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])solid\.h/#include "raytrace.h"\n\1rt\/solid.h/g
	move solid.h to rt/solid.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])shadework\.h/\1optical\/shadework.h/g
	move shadework.h to optical/shadework.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])shadefuncs\.h/\1optical.h/g
	move shadefuncs.h to optical/shadefuncs.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])light\.h/#include "bn.h"\n#include "raytrace.h"\n\1optical\/light.h/g
	move light.h to optical/light.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])plastic\.h/\1optical\/plastic.h/g
	move plastic.h to optical/plastic.h [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])rtgeom\.h/\1rt\/geom.h/g
	move rtgeom.h to rt/geom.h [7.25]
s/rt_vlist_get_cmd_description/bn_vlist_get_cmd_description/g
s/rt_ck_vlist/bn_ck_vlist/g
s/rt_vlist_export/bn_vlist_export/g
s/rt_vlblock_free/bn_vlblock_free/g
s/rt_vlblock_find/bn_vlblock_find/g
	move vlist functions from librt to libbn [7.25]
s/([[:space:],\(,"])bn_tcl/\1tclcad_bn/g
s/([[:space:],\(,"])rt_tcl_rt/\1tclcad_rt/g
s/([[:space:],\(,"])rt_tcl/\1tclcad_rt/g
	tcl library registrations moved to libtclcad [7.25]
s/rt_grow_boolstack/rt_bool_growstack/g
	rename with consistent prefixes [7.25]
s/(#[[:space:]]*include[[:space:]]+["<])obj\.h/\1dm\/bview.h/g
s/GED_VIEW_OBJ_NULL/VIEW_OBJ_NULL/g
	move view_obj to dm/bview.h [7.25]
s/BU_PTBL_CLEAR_I\((.*)\)/BU_PTBL_SET(\1, (long*)0)/g
	replace BU_PTBL_CLEAR_I into the BU_PTBL_SET command [7.25]
s/BU_PTBL_END\(([^\)]*)\)/(\1)->end/g
        replace BU_PTBL_END with direct ptbl peek or BU_PTBL_LEN [7.25]
s/bu_free_argv/bu_argv_free/g
s/bu_dup_argv/bu_argv_dup/g
s/bu_dupinsert_argv/bu_argv_dupinsert/g
	bu_*_argv -> bu_argv_* [7.25]
s/bu_dir_list/bu_file_list/g
	bu_dir_list -> bu_file_list [7.25]
s/BU_FNMATCH_NOMATCH/1/g
	don't use an explicit define for the non-matching case [7.25]
s/bu_basename\(([^\)]*)\)/bu_basename(\1, NULL)/g
	pass NULL argument to get a dynamically allocated buffer back [7.25]

7.28
----
s/bu_free_array/bu_free_args/g
        fixed misleading name [7.26]
s/(#[[:space:]]*include[[:space:]]+["<])bu\/rb\.h/\1bu\/redblack.h/g
	clearer header name [7.26]
s/rt_plot_vlblock/bn_plot_vlblock/g
s/rt_vlist_to_uplot/bn_vlist_to_uplot/g
        move vlist functions to libbn [7.26]
s/rt_nurb_bezier/nmg_nurb_bezier/g
s/rt_nurb_c_split/nmg_nurb_c_split/g
s/rt_nurb_free_cnurb/nmg_nurb_free_cnurb/g
s/rt_nurb_free_snurb/nmg_nurb_free_snurb/g
s/rt_nurb_intersect/nmg_nurb_intersect/g
s/rt_nurb_new_cnurb/nmg_nurb_new_cnurb/g
s/rt_nurb_new_snurb/nmg_nurb_new_snurb/g
s/rt_nurb_s_eval/nmg_nurb_s_eval/g
s/rt_nurb_s_norm/nmg_nurb_s_norm/g
s/rt_nurb_uv_hit/nmg_nurb_uv_hit/g
s/rt_arc2d_to_cnurb/nmg_arc2d_to_cnurb/g
s/rt_join_cnurbs/nmg_join_cnurbs/g
s/rt_nurb_c_eval/nmg_nurb_c_eval/g
s/rt_nurb_c_print/nmg_nurb_c_print/g
s/rt_nurb_kvgen/nmg_nurb_kvgen/g
s/rt_nurb_kvmerge/nmg_nurb_kvmerge/g
s/rt_nurb_s_print/nmg_nurb_s_print/g
s/rt_nurb_s_refine/nmg_nurb_s_refine/g
s/rt_bez_check/nmg_bez_check/g
s/rt_nurb_back_solve/nmg_nurb_back_solve/g
s/rt_nurb_basis_eval/nmg_nurb_basis_eval/g
s/rt_nurb_c_bound/nmg_nurb_c_bound/g
s/rt_nurb_c_check/nmg_nurb_c_check/g
s/rt_nurb_c_diff/nmg_nurb_c_diff/g
s/rt_nurb_c_refine/nmg_nurb_c_refine/g
s/rt_nurb_c_xsplit/nmg_nurb_c_xsplit/g
s/rt_nurb_calc_oslo/nmg_nurb_calc_oslo/g
s/rt_nurb_cinterp/nmg_nurb_cinterp/g
s/rt_nurb_clean_cnurb/nmg_nurb_clean_cnurb/g
s/rt_nurb_clip_srf/nmg_nurb_clip_srf/g
s/rt_nurb_crv_copy/nmg_nurb_crv_copy/g
s/rt_nurb_crv_flat/nmg_nurb_crv_flat/g
s/rt_nurb_curvature/nmg_nurb_curvature/g
s/rt_nurb_doolittle/nmg_nurb_doolittle/g
s/rt_nurb_eval_crv/nmg_nurb_eval_crv/g
s/rt_nurb_forw_solve/nmg_nurb_forw_solve/g
s/rt_nurb_free_oslo/nmg_nurb_free_oslo/g
s/rt_nurb_gen_knot_vector/nmg_nurb_gen_knot_vector/g
s/rt_nurb_knot_index/nmg_nurb_knot_index/g
s/rt_nurb_kvcheck/nmg_nurb_kvcheck/g
s/rt_nurb_kvcopy/nmg_nurb_kvcopy/g
s/rt_nurb_kvextract/nmg_nurb_kvextract/g
s/rt_nurb_kvknot/nmg_nurb_kvknot/g
s/rt_nurb_kvmult/nmg_nurb_kvmult/g
s/rt_nurb_kvnorm/nmg_nurb_kvnorm/g
s/rt_nurb_map_oslo/nmg_nurb_map_oslo/g
s/rt_nurb_mesh_diff/nmg_nurb_mesh_diff/g
s/rt_nurb_mk_poly/nmg_nurb_mk_poly/g
s/rt_nurb_p_mat/nmg_nurb_p_mat/g
s/rt_nurb_plot_cnurb/nmg_nurb_plot_cnurb/g
s/rt_nurb_plot_snurb/nmg_nurb_plot_snurb/g
s/rt_nurb_poly/nmg_nurb_poly/g
s/rt_nurb_pr_crv/nmg_nurb_pr_crv/g
s/rt_nurb_pr_kv/nmg_nurb_pr_kv/g
s/rt_nurb_pr_mesh/nmg_nurb_pr_mesh/g
s/rt_nurb_pr_oslo/nmg_nurb_pr_oslo/g
s/rt_nurb_print_pt_type/nmg_nurb_print_pt_type/g
s/rt_nurb_project_srf/nmg_nurb_project_srf/g
s/rt_nurb_region_from_srf/nmg_nurb_region_from_srf/g
s/rt_nurb_s_bound/nmg_nurb_s_bound/g
s/rt_nurb_s_check/nmg_nurb_s_check/g
s/rt_nurb_s_diff/nmg_nurb_s_diff/g
s/rt_nurb_s_flat/nmg_nurb_s_flat/g
s/rt_nurb_s_plot/nmg_nurb_s_plot/g
s/rt_nurb_s_split/nmg_nurb_s_split/g
s/rt_nurb_s_xsplit/nmg_nurb_s_xsplit/g
s/rt_nurb_scopy/nmg_nurb_scopy/g
s/rt_nurb_sinterp/nmg_nurb_sinterp/g
s/rt_nurb_solve/nmg_nurb_solve/g
s/rt_nurb_to_poly/nmg_nurb_to_poly/g
        rename old nurbs functions intertwined with nmg to use nmg prefix [7.27]
s/RTG.NMG_debug/nmg_debug/g
	make nmg debug flag top level, like libbu's [7.27]
s/BU_ASSERT(_[A-Z_]+)\(([^,]+|.*\(.*,.*\)),([^,]+|.*\(.*,.*\)),([^,]+|.*\(.*,.*\))\);/BU_ASSERT(\2\3\4);/g
	consolidated BU_ASSERT_PTR, BU_ASSERT_LONG, BU_ASSERT_SIZE_T, BU_ASSERT_SSIZE_T, BU_ASSERT_DOUBLE [7.27]
s/BU_FLSTR/CPP_FILELINE/g
        symbol now owned by common.h, not specific to libbu [7.27]
s/vert_root/bn_vert_tree/g
s/create_vert_tree[[:space:]]*\(/bn_vert_tree_create\(/g
s/create_vert_tree_w_norms[[:space:]]*\(/bn_vert_tree_create_w_norms\(/g
s/free_vert_tree[[:space:]]*\(/bn_vert_tree_destroy\(/g
s/Add_vert[[:space:]]*\(([^,]*,)([^,]*,)([^,]*,)([^,]*,)/bn_vert_tree_add\(\4\1\2\3/g
s/Add_vert_and_norm[[:space:]]*\(([^,]*,)([^,]*,)([^,]*,)([^,]*,)([^,]*,)([^,]*,)([^,]*,)/bn_vert_tree_add_w_norm\(\7\1\2\3\4\5\6/g
s/clean_vert_tree[[:space:]]*\(/bn_vert_tree_clean\(/g
        symbols renamed per convention with their library prefix [7.27]
s/BU_DEBUG_MEM_CHECK/0/g
s/DEBUG_MEM_FULL/0/g
        developer debugging symbols removed [7.27]
s/bu_dirname\(/bu_path_dirname\(/g
s/bu_basename\(/bu_path_basename\(/g
s/bu_normalize\(/bu_path_normalize\(/g
s/bu_argv_from_path\(/bu_path_to_argv\(/g
        renamed path functions with proper group label [7.27]
s/bu_fnmatch\(/bu_path_match\(/g
s/BU_FNMATCH_LEADING_DIR/0x0/g
s/BU_FNMATCH_/BU_PATH_MATCH/g
        renamed for consistency, simplified [7.27]
s/bu_path_canonicalize[[:space:]]*\(([^,]*)/bu_realpath(\1, NULL/g
	duplicate functionality consolidated to bu_realpath() [7.27] 
s/gqa(.*)-p/gqa\1-p ""/g
	gqa now takes a prefix for plot file output
s/bu_same_file/bu_file_same/g
s/bu_realpath/bu_file_realpath/g
s/bu_suspend_interrupts/bu_interrupt_suspend/g
s/bu_restore_interrupts/bu_interrupt_restore/g
        renamed for API consistency [7.27]
s/bu_brlcad_data[[:space:]]*\(/bu_brlcad_root("share/"/g
        replaced by new BU API
s/struct[[:space:]]*ged_run_rt/struct ged_subprocess/g

7.30
----
s/BU_DEBUG_MEM_LOG/0/g
	bu memory debugging API removed [7.29]
s/ged_count_tops/ged_who_argc/g
s/ged_build_tops/ged_who_argv/g
        functions renamed as they pertain to 'who' listings, not 'tops' [7.30]
s/rt_tess_tol/bg_tess_tol/g
s/RT_TESS_TOL_MAGIC/BG_TESS_TOL_MAGIC/g
s/RT_TESS_TOL_INIT_ZERO/BG_TESS_TOL_INIT_ZERO/g
s/RT_CK_TESS_TOL/BG_CK_TESS_TOL/g
        moved librt tolerances to libbg [7.30]
s/DEBUG_PT_FU/DEBUG_PNT_FU/g
s/DIST_PT2_PT2/DIST_PNT2_PNT2/g
s/DIST_PT2_PT2_SQ/DIST_PNT2_PNT2_SQ/g
s/DIST_PT_PLANE/DIST_PNT_PLANE/g
s/DIST_PT_PT/DIST_PNT_PNT/g
s/DIST_PT_PT_SQ/DIST_PNT_PNT_SQ/g
s/V3PT_IN_RPP/V3PNT_IN_RPP/g
s/V3PT_IN_RPP_TOL/V3PNT_IN_RPP_TOL/g
s/V3PT_OUT_RPP_TOL/V3PNT_OUT_RPP_TOL/g
s/WDB_METABALLPT_NULL/WDB_METABALL_PNT_NULL/g
s/_ged_cm_lookat_pt/_ged_cm_lookat_pnt/g
s/_ged_get_metaball_i_pt/_ged_get_metaball_i_pnt/g
s/add_metaballpt/metaball_add_pnt/g
s/add_pipept/pipe_add_pnt/g
s/append_pipept/pipe_append_pnt/g
s/bg_3d_polygon_mk_pts_planes/bg_3d_polygon_make_pnts_planes/g
s/bg_pt_in_polygon/bg_pnt_in_polygon/g
s/bn_3pts_collinear/bn_3pnts_collinear/g
s/bn_3pts_distinct/bn_3pnts_distinct/g
s/bn_dist_line3_pt3/bn_dist_line3_pnt3/g
s/bn_dist_pt2_along_line2/bn_dist_pnt2_along_line2/g
s/bn_dist_pt2_lseg2/bn_dist_pnt2_lseg2/g
s/bn_dist_pt3_along_line3/bn_dist_pnt3_along_line3/g
s/bn_dist_pt3_line3/bn_dist_pnt3_line3/g
s/bn_dist_pt3_lseg3/bn_dist_pnt3_lseg3/g
s/bn_dist_pt3_pt3/bn_dist_pnt3_pnt3/g
s/bn_dist_pt_lseg/bn_dist_pnt_lseg/g
s/bn_distsq_line3_pt3/bn_distsq_line3_pnt3/g
s/bn_distsq_pt3_lseg3_v2/bn_distsq_pnt3_lseg3_v2/g
s/bn_isect_pt2_lseg2/bn_isect_pnt2_lseg2/g
s/bn_isect_pt_lseg/bn_isect_pnt_lseg/g
s/bn_mat_scale_about_pt/bn_mat_scale_about_pnt/g
s/bn_mat_xform_about_pt/bn_mat_xform_about_pnt/g
s/bn_mk_plane_3pts/bn_make_plane_3pnts/g
s/bn_mkpoint_3planes/bn_make_pnt_3planes/g
s/bn_npts_distinct/bn_npnts_distinct/g
s/bn_pt2_pt2_equal/bn_pnt2_pnt2_equal/g
s/bn_pt3_pt3_equal/bn_pnt3_pnt3_equal/g
s/bn_sph_pts/bn_sph_pnts/g
s/bn_table_delete_sample_pts/bn_table_delete_sample_pnts/g
s/del_pipept/pipe_del_pnt/g
s/delete_metaballpt/metaball_delete_pnt/g
s/delete_pipept/pipe_pnt_delete/g
s/exported_pipept/exported_pipe_pnt/g
s/find_arb_edge_nearest_pt/find_arb_edge_nearest_pnt/g
s/find_botpt_nearest_pt/find_bot_pnt_nearest_pnt/g
s/find_metaballpt_nearest_pt/find_metaball_pnt_nearest_pnt/g
s/find_nearest_ars_pt/find_ars_nearest_pnt/g
s/find_pipept_nearest_pt/find_pipe_pnt_nearest_pnt/g
s/ged_add_metaballpt/ged_metaball_add_pnt/g
s/ged_append_pipept/ged_pipe_append_pnt/g
s/ged_delete_metaballpt/ged_metaball_delete_pnt/g
s/ged_delete_pipept/ged_pipe_pnt_delete/g
s/ged_find_arb_edge_nearest_pt/ged_find_arb_edge_nearest_pnt/g
s/ged_find_botpt_nearest_pt/ged_find_bot_pnt_nearest_pnt/g
s/ged_find_metaballpt_nearest_pt/ged_find_metaball_pnt_nearest_pnt/g
s/ged_find_pipept_nearest_pt/ged_find_pipe_pnt_nearest_pnt/g
s/ged_mat_scale_about_pt/ged_mat_scale_about_pnt/g
s/ged_move_botpt/ged_bot_move_pnt/g
s/ged_move_botpts/ged_bot_move_pnts/g
s/ged_move_metaballpt/ged_metaball_move_pnt/g
s/ged_move_pipept/ged_pipe_move_pnt/g
s/ged_prepend_pipept/ged_pipe_prepend_pnt/g
s/ins_pipept/pipe_ins_pnt/g
s/jitter_start_pt/jitter_start_pnt/g
s/kdtree_get_pt/kdtree_get_pnt/g
s/mat_scale_about_pt/mat_scale_about_pnt/g
s/metaballpt/metaball_pnt/g
s/mk_add_pipe_pt/mk_add_pipe_pnt/g
s/move_botpt/bot_move_pnt/g
s/move_botpts/bot_move_pnts/g
s/move_metaballpt/metaball_move_pnt/g
s/move_pipept/pipe_move_pnt/g
s/move_pipept/pipe_move_pnt/g
s/nmg_class_pt_f/nmg_class_pnt_f/g
s/nmg_class_pt_fu_except/nmg_class_pnt_fu_except/g
s/nmg_class_pt_l/nmg_class_pnt_l/g
s/nmg_class_pt_lu_except/nmg_class_pnt_lu_except/g
s/nmg_class_pt_s/nmg_class_pnt_s/g
s/nmg_classify_pt_loop/nmg_classify_pnt_loop/g
s/nmg_find_pt_in_face/nmg_find_pnt_in_face/g
s/nmg_find_pt_in_lu/nmg_find_pnt_in_lu/g
s/nmg_find_pt_in_model/nmg_find_pnt_in_model/g
s/nmg_find_pt_in_shell/nmg_find_pnt_in_shell/g
s/nmg_get_interior_pt/nmg_get_interior_pnt/g
s/nmg_move_edge_thru_pt/nmg_move_edge_thru_pnt/g
s/nmg_nurb_print_pt_type/nmg_nurb_print_pnt_type/g
s/pipept/pipe_pnt/g
s/prepend_pipept/pipe_prepend_pnt/g
s/rt_arb_add_pt/rt_arb_add_pnt/g
s/rt_ell_16pts/rt_ell_16pnts/g
s/rt_metaballpt_print/rt_metaball_pnt_print/g
s/rt_pipept_print/rt_pipe_pnt_print/g
s/rt_pr_pt/rt_pr_partition/g
s/rt_pr_pt_vls/rt_pr_partition_vls/g
s/rt_pt_node/rt_pnt_node/g
s/rt_pt_sort/rt_pnt_sort/g
s/rt_vls_metaballpt/rt_metaball_pnt_vls/g
s/rt_vls_pipept/rt_pipe_pnt_vls/g
s/split_pipept/pipe_split_pnt/g
s/tclcad_bn_dist_pt2_lseg2/tclcad_bn_dist_pnt2_lseg2/g
s/tclcad_bn_mat_xform_about_pt/tclcad_bn_mat_xform_about_pnt/g
s/wdb_metaballpt/wdb_metaball_pnt/g
s/wdb_pipept/wdb_pipe_pnt/g
        renamed points from pt to pnt for consistency [7.30]
s/proe-brl/creo-brl/g
        replaced by newer creo plugin [7.30]

7.32
----
s/facetall.sh/mged -c facetize/g
        replaced by more improved facetize command [7.30]
s/pixcmp -s/pixcmp -q/g
s/pixcmp -l/pixcmp -d/g
	changed pixcmp options for consistency with new options [7.32]
s/(#[[:space:]]*include[[:space:]]+["<])bn\/clip\.h/\1bg\/clip.h/g
        moved clip.h header [7.32]
s/bn_ray_vclip/bg_ray_vclip/g
s/bn_lseg_clip/bg_lseg_clip/g
        functions moved and renamed [7.32]
s/(#[[:space:]]*include[[:space:]]+["<])bn\/vlist\.h/\1bview\/vlist.h/g
        moved vlist.h header [7.32]
s/bn_vlist/bv_vlist/g
s/bn_vlblock/bv_vlblock/g
s/BN_VLIST/BV_VLIST/g
s/BN_ADD_VLIST/BV_ADD_VLIST/g
s/BN_FREE_VLIST/BV_FREE_VLIST/g
s/bn_plot_vlblock/bv_plot_vlblock/g
s/BN_CK_VLBLOCK/BV_CK_VLBLOCK/g
s/BN_CK_VLIST/BV_CK_VLIST/g
s/BN_VLBLOCK_MAGIC/BV_VLBLOCK_MAGIC/g
s/bn_ck_vlist/bv_ck_vlist/g
s/BN_GET_VLIST/BV_GET_VLIST/g
        bn_vlist relocated to libbview [7.32]
s/(#[[:space:]]*include[[:space:]]+["<])bn\/plane\.h/\1bg\/plane.h/g
        moved plane.h header [7.32]
s/bn_distsq_line3_line3/bg_distsq_line3_line3/g
s/bn_dist_pnt3_line3/bg_dist_pnt3_line3/g
s/bn_dist_line3_lseg3/bg_dist_line3_lseg3/g
s/bn_dist_line3_line3/bg_dist_line3_line3/g
s/bn_dist_pnt3_lseg3/bg_dist_pnt3_lseg3/g
s/bn_distsq_pnt3_lseg3_v2/bg_distsq_pnt3_lseg3_v2/g
s/bn_3pnts_collinear/bg_3pnts_collinear/g
s/bn_pnt3_pnt3_equal/bg_pnt3_pnt3_equal/g
s/bn_dist_pnt2_lseg2/bg_dist_pnt2_lseg2/g
s/bn_isect_lseg3_lseg3/bg_isect_lseg3_lseg3/g
s/bn_lseg3_lseg3_parallel/bg_lseg3_lseg3_parallel/g
s/bn_isect_line3_line3/bg_isect_line3_line3/g
s/bn_2line3_colinear/bg_2line3_colinear/g
s/bn_isect_pnt2_lseg2/bg_isect_pnt2_lseg2/g
s/bn_isect_line2_lseg2/bg_isect_line2_lseg2/g
s/bn_isect_lseg2_lseg2/bg_isect_lseg2_lseg2/g
s/bn_isect_line2_line2/bg_isect_line2_line2/g
s/bn_dist_pnt3_pnt3/bg_dist_pnt3_pnt3/g
s/bn_3pnts_distinct/bg_3pnts_distinct/g
s/bn_npnts_distinct/bg_npnts_distinct/g
s/bn_make_plane_3pnts/bg_make_plane_3pnts/g
s/bn_make_pnt_3planes/bg_make_pnt_3planes/g
s/bn_isect_line3_plane/bg_isect_line3_plane/g
s/bn_isect_2planes/bg_isect_2planes/g
s/bn_isect_2lines/bg_isect_2lines/g
s/bn_isect_line_lseg/bg_isect_line_lseg/g
s/bn_dist_line3_pnt3/bg_dist_line3_pnt3/g
s/bn_distsq_line3_pnt3/bg_distsq_line3_pnt3/g
s/bn_dist_line_origin/bg_dist_line_origin/g
s/bn_dist_line2_point2/bg_dist_line2_point2/g
s/bn_distsq_line2_point2/bg_distsq_line2_point2/g
s/bn_area_of_triangle/bg_area_of_triangle/g
s/bn_isect_pnt_lseg/bg_isect_pnt_lseg/g
s/bn_dist_pnt_lseg/bg_dist_pnt_lseg/g
s/bn_rotate_bbox/bg_rotate_bbox/g
s/bn_rotate_plane/bg_rotate_plane/g
s/bn_coplanar/bg_coplanar/g
s/bn_angle_measure/bg_angle_measure/g
s/bn_dist_pnt3_along_line3/bg_dist_pnt3_along_line3/g
s/bn_dist_pnt2_along_line2/bg_dist_pnt2_along_line2/g
s/bn_between/bg_between/g
s/bn_does_ray_isect_tri/bg_does_ray_isect_tri/g
s/bn_hlf_class/bg_hlf_class/g
s/bn_isect_planes/bg_isect_planes/g
s/bn_plane_pt_nrml/bg_plane_pt_nrml/g
s/bn_fit_plane/bg_fit_plane/g
s/bn_plane_closest_pt/bg_plane_closest_pt/g
s/bn_plane_pt_at/bg_plane_pt_at/g
s/BN_CLASSIFY/BG_CLASSIFY/g
        plane.h moved from libbn to libbg [7.32]
s/(#[[:space:]]*include[[:space:]]+["<])bn\/plot3\.h/\1bview\/plot3.h/g
        moved plot3.h header [7.32]
s/(#[[:space:]]*include[[:space:]]+["<])bn\/vert_tree\.h/\1bg\/vert_tree.h/g
        moved vert_tree.h header [7.32]
s/bn_vert_tree/bg_vert_tree/g
        moved vert_tree to libbg [7.32]
s/(#[[:space:]]*include[[:space:]]+["<])bn\/vectfont\.h/\1bview\/vectfont.h/g
        moved vertfont.h header to bview[7.32]
s/ID_MATERIAL/ID_COLORTAB/g
        renamed to make room for material objects [7.32]
s/GED_OK/BRLCAD_OK/g
s/GED_ERROR/BRLCAD_ERROR/g
s/GED_HELP/BRLCAD_HELP/g
s/GED_MORE/BRLCAD_MORE/g
s/GED_UNKNOWN/BRLCAD_UNKNOWN/g
s/bu_whereis\(/bu_whence\(/g
s/bu_which\(/bu_whence\(/g
s/rt_gettree_muves\(/rt_gettrees_and_attrs\(/g

7.36
----
s/V3DIR_FROM_AZEL\(/bn_vec_ae\(/g
s/AZEL_FROM_V3DIR\([[:space:]]*([^,]*),[[:space:]]*([^,]*),/bn_ae_vec\(&\1, &\2/g

7.38
----
s/bg_polygon_triangulate/bg_poly_triangulate/g
s/bg_nested_polygon_triangulate/bg_nested_poly_triangulate/g
s/OP_NMG_TESS/OP_TESS/g
s/tree_nmgregion/tree_tessellation/g
s/nmg_booltree_leaf_tess/rt_booltree_leaf_tess/g
s/-ghosting-intensity/-ghost-intensity/g
        rtwizard option simplified [7.38]
s/pl_mat_idn/MAT_IDN/g
s/pl_mat_zero/MAT_ZERO/g
s/pl_mat_copy/MAT_COPY/g
s/ambSlow=[0-9]*//g
