📄 relnotes
字号:
==============================================================================================================================================================Release notes for Jam 2.5(aka Jam - make(1) redux)1. Release info: Jam 2.5 August 19, 2004 VERSION 2.5 (n.b. Jam 2.5 is merely Jam 2.5rc3 of April 2003 with the rc3 moniker removed.)2. Compatibility Jam 2.5 is upward compatible with Jam 2.4 The Jam 2.5 language is a superset of the 2.4 language; Jamfiles, Jambase, and other rulesets used in 2.4 can be used with the 2.5 language support.3. Changes since 2.4.3.1. Changes to Jam Language The 'return' statement now actually returns, and there are now break & continue statements for for & while loops.3.2. Jambase Changes MkDir now grists directories with 'dir', so that directory targets can be distinguished from other targets. SubDir now allows multiple overlapping roots (top level directories): the first SubDir of a new root uses the CWD of jam to set that root; subsquent SubDirs use the current SUBDIR to set the new root. New FSubDirPath to compute a path (given SubDir arguments) and SubRules to include another root's Jamrules. Jamrules only included if present; no error issued if no Jamrules file. Using SubDir to include a subpart of an SubDir tree now works. Previously, you could only include the root of another SubDir tree. This example includes the ../server/support/Jamfile, without getting confused as to the current directory: SubDir ALL src builds ; SubInclude ALL src server support ; $(RMDIR) has been defined for NT and defaulted to $(RM) everwhere else. Not much tested. For Michael Champigny. GenFile actions (on UNIX) now put . in the PATH for the execution of the command, so that (at least) when jam builds itself . does not need to be in the global path. It is the rare case where a target bound in the current directory can't be used directly, so we fudge it by setting PATH. Undocumented support for SUBDIRRULES, user-provided rules to invoke at the end of the SubDir rule, and SUBDIRRESET, SUBDIR variables to reset (like SUBDIRC++FLAGS, SUBDIRHDRS, etc) for each new SubDir.3.3 'jam' Changes (See Jam.html) The whole /MR of Jam's name has been dropped. It was intended to avoid trademark infringement of JYACC's JAM, but as far as we can tell (a) it wasn't enough to avoid infringement and (b) the trademark has lapsed anyhow. If header dependencies cause an object to be recompiled and the source file is a temporary, the temporary is now reconstructed. Previously, headers weren't considered when deciding when to reconstruct a temporary. -d has been reworked to make it easier to display more useful tracing information separate from the debugging gunk: -da - show all actions (formerly -d2) -dc - show 'causes' for rebuilding (new output) -dd - show dependencies (new output) -dm - show make graph (aka -d3) -dx - show executable text (formerly -d2) -dd is new, and more display options are anticipated. -n now implies -dax. The message "...using xxx..." now only shows up with -da. Jam.html was extensively updated, in an attempt at lucidity.3.4. Jam internal code changes Removed spurious search() in 'on' statement handling, thanks (again) to Ingo Weinhold. Fix 'includes' support so that included files aren't treated as direct dependencies during the command execution phase. If an included file failed to build, make1() would bypass the including file. Now make0() appends each child's 'includes' onto its own 'depends' list, eliminating 'includes'-specific code in make0() and make1(). Rewrite of the past: updated all jam's source with comments to reflect changes since about 2.3, very early 2001.4. Fixed bugs Fixed the description of the :E modifier in Jam.html. Setting target-specific variables while under the influence of the target's target-specific variables caused the _global_ values to be modified. This happened both during header file scanning (HdrRule is called when target-specific variables are in effect) and with the "on target statement" syntax. Now setting target-specific variables works again. Thanks to Matt Armstrong. Setting "var on target ?= value" now works as expected: if the variable is already set on the target, it is left unchanged. Previously, ?= was ignored and the variable was set anyway. Thanks to Chris Antos. Variable expansion in actions has always put an extra blank space after the last list element, but the expansion is described in the code as "space separated". Now the last blank is suppressed to match. From Miklos Fazekas. The temp file name used by jam for .bat files on NT now contains jam's pid, so that multiple jams can run on the same system (with the same $TEMP). Thanks to Steve Anichini. Several uninitialized memory accesses have been corrected in var_expand() and file_archscan(), thanks to Matt Armstrong.5. Porting The Makefile now uses $(EXENAME) (./jam0 on UNIX, .\jam0.exe on NT) instead of just "jam0", so that . doesn't need to be in your PATH to bootstrap. MACOSX updates: use 'ar' instead of libtool, as libtool can't update a library and we archive too many things to do it in one go; add piles of code to file_archscan() to handle new BSD4.4 style "#1/nnnn" archive entry names, where the real entry name follows the header and nnnn is the length of the name. The jam code underwent a const-ing, to work with compilers that don't like "" being passed as a non-const char *. Compiling on solaris w/ sparc now sets OSPLAT to "sparc". Previously, it suppressed this, assuming (wrongly) that sparc was the only solaris platform. Thanks to Michael Champigny <michael.champigny@intel.com>. Jambase no longer announces the compiler it is using on Windows. It doesn't announce anything else, so why? Jambase no longer refers to advapi32.lib on NT, as it isn't needed for linking jam itself and it seems to move from release to release (of MS Visual Studio). Makefile/Jambase: BEOS updates from "Ingo Weinhold" <bonefish@cs.tu-berlin.de>. The NoCare rule can be used to suppress error messages when an 'include' file can't be found. AIX "big" archives are now supported, thanks to suggestions from Randy Roesler. MSVCDIR now works as well as MSVCNT for the Microsoft Visual C compiler directory. It changed names in VC 6.0. Thanks to Matt Armstrong. Allow jam to build with BorlandC 5.5 For WinXP IA64; set MSVCNT to the root of the SDK and MSVCVer to Win64; change handle type to long long (too much to include windows.h?); bury IA64 in the library path in Jambase. Mac classic MPW Codewarrior 7 upgrades: minor compiling issues, new paths in Jambase for libraries and includes, and separate out GenFile1 that sets PATH for UNIX only, as it does't work under MPW (or anything other than with sh). Minor Cray porting: make hashitem()'s key value unsigned so we're guaranteed no integer overflows. Remove NT FQuote rule, as, \" is required to pass quotes on the command line. Remove temp .bat files created on NT. They used to all have the same name and get reused, but with 2.5 the names were salted with the PID and they would litter $TEMP. Now they get removed after being used.==============================================================================================================================================================Release notes for Jam 2.4(aka Jam - make(1) redux)1. Release info: Jam 2.4 March, 21, 2002 VERSION 2.42. 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, given a list of directories, and a list of filename 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -