⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 relnotes

📁 boost库提供标准的C++ API 配合dev c++使用,功能更加强大
💻
📖 第 1 页 / 共 3 页
字号:
Release notes for Jam/MR 2.4
(aka Jam - make(1) redux)

0.  Changes between 2.4rc1 and 2.4rc2:

    THESE NOTES WILL BE REMOVED WITH THE FINAL 2.4 RELEASE, SINCE THEY
    REFER EXCLUSIVELY TO ADJUSTMENTS IN BEHAVIORS NEW BETWEEN 2.3 and
    2.4:

	Make MATCH generate empty strings for () subexpressions that
	match nothing, rather than generating nothing at all.
	Thanks to David Abrahams.

	GLOB now applies the pattern to the directory-less filename,
	rather than the whole path. Thanks to Niklaus Giger.

	Make Match rule do productized results, rather than
	using just $(1[1]) as pattern and $(2[1]) as the string.

1.  Release info:

	Jam/MR 2.4
	March, 21, 2002
	VERSION 2.4

2.  Compatibility

	Jam 2.4 is upward compatible with Jam 2.3

	The Jam 2.4 language is a superset of the 2.3 language;
	Jamfiles, Jambase, and other rulesets used in 2.3 can be used
	with the 2.4 language support.

3.  Changes since 2.3.

3.1.  Changes to Jam Language

	The mechanism for calling rules that return values - "[ rule
	args ...]", (and 'return' in the rule body), is now a
	documented part of the language.

	Add "on <target> <rulename> <field1> ..." syntax, to invoke a
	rule under the influence of a target's specific variables.

        Add "[ on targ rule ... ]" to call a rule returning a value,
        under the influence of a target's specific variables.

	New 'Glob' builtin that returns a list of files in a list of
	directories, given a list of patterns.

	New 'while expr { block }' construct.

	New :E=value modifier provides default value if variable unset.

	New :J=joinval modifier concatenates list elements into single
		element, separated by joinval.

	\ can now be used to escape a space (or any single whitespace
	character), so that you don't have to resort to quotes. 

	New 'Match regexp : string' rule matches regexp against string
	and returns list of results.

	Rules can now be invoked indirectly, through variable names.
	If the variable expands to an empty list, no rule is run.
	If the variable expands to multiple entries, each rule is
	run with the same arguments.  The result of the rule invocation
	is the concatenation of the results of the rules invoked.

	'Echo' and 'Exit' now have aliases 'echo' and 'exit', since it
	is really hard to tell that these are built-in rules and not
	part of the language, like 'include'.  Real rules continue to
	start with a capital.

3.2.  Jambase Changes

	Support for YACCGEN, the suffix used on generated yacc output.

        Fix ups to have jam and p4 build with borland C 5.5,
        and minor win98 jam support for jam clean

	SubDirHdrs now takes directory names in the same format as
	SubInclude : one directory element per word.

	More portable support for specifying includes and #defines:
	New ASHDRS, CCHDRS, CCDEFS, DEFINES, ObjectDefines, FQuote,
	FIncludes, FDefines.  Ordering of cc and c++ flags grossly
	rearranged.

	Jambase has been compacted by applying the new E: and J:
	expansion modifiers.

	New SoftLink rule, courtesy of David Lindes.  It currently
	assumes you can pass a -s flag to $(LN).

3.3   'jam' Changes (See Jam.html)

	Added '-q' (quit quick) option; jam will exit promptly (as if it
	received an interrupt), as soon as any target fails.

	Added experimental '-g' (build newest sources first) option:
	all things being equal, normally targets are simply built in
	the order they appear in the Jamfiles.  With this flag, targets
	with the newest sources are built first.   From an idea by Arnt
	Gulbrandsen.  Undocumented (outside this note).

3.4.  Jam internal code changes

	jamgram.yy now defines YYMAXDEPTH to 10000, what it is on 
	FreeBSD, for older yaccs that left it at 150 or so.  This is
	needed for the right-recursion now used in the grammar.

	Optimize rule compilation, with right-recursion instead of left.

        Split jam's built-in rules out to builtins.c from compile.c,
        so that compile.c only deals with the language.

        Split jam's pathsys.h from filesys.h, since they are really
        two different pieces.

	evaluate_if(), which evaluated the condition tree for 'if' and
	returned an int, has been replaced with compile_eval(), which does
	essentially the same but returns a LIST.

4.  Fixed bugs

	Missing TEMPORARY targets with multiple parents no longer spoil one
	parent's time with another.  The parents' time is used for comparison
	with dependents, but no longer taken on as the target's own time.

	'actions updated', not 'actions together', now protects targets
	from being deleted on failed/interrupted updates.

	Fixed broken $(v[1-]), which always returned an empty expansion.
	Thanks to Ian Godin <ian@sgrail.com>.

	Defining a rule within another rule, and invoking the enclosing
	rule more than once, would result in giving the first rule a
	null definition.  Fixed.

	$(d:P) now works properly on the mac, climbing up directories.
	Thanks to Miklos Fazekas <boga@mac.com>.

        No longer (sometimes) treat \ as a directory separator on
        UNIX.  It isn't supposed to be, but was due to bungled ifdefs.
        
        Applying just :U or :D (or :E, :J) mods no longer causes the
        variable value to be treated as a filename (parsed and rebuilt
        using the OS specific pathsys routines). Previously, if _any_
        mods were present then the value was parsed and rebuilt as if
        a filename, and that could in certain cases munge the value.
        Only the file modifiers (:GDBSM) treat the value as a
        filename.

	Four rules makeCommon, makeGrist, makeString, makeSubDir from
	jam 2.2 missing in 2.3 have been re-added, with apologies to
	dtb@cisco.com.

	Return status more likely to be correct when using -d0, now that 
	targets are could as being built even with no debugging output.
	Thanks to Miklos Fazekas <boga@mac.com>.

	yyacc now suffixes all terminals it defines with _t, so that they
	don't conflict with other symbols (like RULE with the typedef
	in rules.h).  Thanks to Michael Allard.

	InstallInto now handles multiple sources properly, rather than
	acting as if each installed target depended on all sources to
	be installed.  $(INSTALLGRIST) is now the default grist for
	installed targets, rather than the hardcoded 'installed'.  Thanks
	to Stephen Goodson.

5.  Porting

	[MACINTOSH] Paths are now downshifted (internally) so as to
	handle its case insensitivity.  Thanks to Miklos Fazekas
	<boga@mac.com>.

        [NT] MS changed the macro for the IA64 Windows NT 64bit
        compiler.

	[CYGWIN] Cygwin jam porting: dance around bison and yyacc.
	Use bison's -y flag to use yacc's output file naming
	conventions, and don't use yyacc on systems whose SUFEXE is
	set.

	[VMS] The Jambase itself was not formatting the CCHDRS and
        CCDEFS properly: on VMS they can't be appended to, because
        multiple /define or /include directives don't work.  Instead
        now CCHDRS and CCDEFS is reformatted from HDRS and DEFINES
        anytime those latter two change.  This requires the recent
        change to jam to allow access to target-specific variables
        when setting other variables.

        [VMS] Remove exception call when file_dirscan() can't, for
        some reason, scan a directory.  Use a better set of #ifdefs to
        determine if we're on a vax, rather than relying on the C
        compiler being a specific version: we're able to build with
        the C++ compiler now.

	[VMS] Port new jam to run with just cxx compiler.
        (The C compiler being a extra-cost item).

        [NT] Add entry for DevStudio when the settings are already in the
        system environment.

        [NT] default $(MV) to "move /y" in Jambase.

	[MINGW] Mingw port by Max Blagai.

===============================================================================
===============================================================================


======= end
Release notes for Jam/MR 2.3
(aka Jam - make(1) redux)

0.  Bugs fixed since 2.3.1

	PATCHLEVEL 2 - 3/12/2001

	NOCARE changed back: it once again does not applies to targets
	with sources and/or actions.  In 2.3 it was changed to apply to
	such targets, but that broke header file builds: files that are
	#included get marked with NOCARE, but if they have source or
	actions, they still should get built.

1.  Release info:

	Jam/MR 2.3
	November 16, 2000
	VERSION 2.3
	PATCHLEVEL 1

2.  Compatibility

	Jam 2.3 is upward compatible with Jam 2.2.

	The Jam 2.3 language is a superset of the 2.2 language;
	Jamfiles, Jambase, and other rulesets used in 2.2 can be used
	with the 2.3 language support.

3.  Changes since 2.2

3.1.  Changes to Jam Language

	Rules now can have values, which can expanded into a list with
	the new "[ rule args ... ]" syntax.  A rule's value is the value
	of its last statement, though only the following statements have
	values: if (value of the leg chosen), switch (ditto), set (value
	of the resulting variable), return (its arguments).  Note that
	'return' doesn't actually return.  This support is EXPERIEMENTAL
	and otherwise undocumented.  (2.3.1)

	Because of the new way lists are processed, if a rule has no
	targets a warning message is no longer issued.

	NOCARE now applies to targets with sources and/or actions,
	rather than just those without.

3.2.  Jambase Changes

	The HDRPATTERN variable now allows for leading blanks before
	the #include, to keep up with ANSI.  By john@nanaon-sha.co.jp
	(John Belmonte) (2.2.3).

	HDRPATTERN has been adjusted to avoid mistaking cases like:

		# include <time.h> /* could be <sys/time.h> */

	MkDir now NOUPDATE's $(DOT), so that there are no dependencies
	on the current directory's timestamp.  By john@nanaon-sha.co.jp
	(John Belmonte).

	The old mock functions like makeDirName, which assigned their
	results to the variable named as their first argument, have
	been replaced with real functions using the new [] synxtax.
	E.g. "makeDirName foo : bar ola" is now "foo = [ fDirName bar ]"

	Install now always does a cp/chmod/etc, rather than using
	the system's install(1), which invariably seems broken.

3.3.  Jam internal code changes

	$JAMUNAME is set on UNIX.  (2.2.4).

	Jam ANSI-fied (2.3.0).

	jam.h now defines a bunch of symbols used by the other source
	files, so as minimize compiler- and platform-specific ifdefs.

	OSVER is no longer set by jam.h (it was only set for AIX).
	Jam does not depend on this variable at all, except to set
	$(OSFULL), which is used to determine jam's build directory.
	If the user needs to distinguish between various revs of 
	OSs, he must set OSVER in the environment.

4.  Fixed bugs

	Redefining a rule while it was executing could cause jam to
	crash.  Reference counts are now used to prevent that, thanks
	to Matt Armstrong.

	Logic for computing chunk size when executing PIECEMEAL rules
	has been reworked to be a little more accurate, without danger
	of overflow, at the cost of being a little more compute intensive.
	Instead of computing an estimate chunksize in the (now gone)
	make1chunk(), make1cmds() now just goes full bore and tries to
	use all args.  When that fails, it backs off by 10% of the source
	args until the command fits.  It takes a little bit more compute
	time compared to the old logic, but when you're executing actions
	to build all of Shinola it's still pretty small in the scheme
	of things.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -