text:
Changes since Jam/MR 2.4 Makefile/Jambase: BEOS updates from "Ingo Weinhold" <firstname.lastname@example.com>. Jambase: MkDir now grists it directories with 'dir', so that directory targets can be distinguished from other targets. Jambase: 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. 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. 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. =============================================================================== =============================================================================== Release notes for Jam/MR 2.4 (aka Jam - make(1) redux) 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, 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 <firstname.lastname@example.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 <firstname.lastname@example.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 firstname.lastname@example.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 <email@example.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 <email@example.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. =============================================================================== =============================================================================== 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 email@example.com (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 firstname.lastname@example.com (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. The NT handle leak in execunix.c has been fixed, thanks to Gurusamy Sarathy. (2.2.1). 5. Porting Platforms newly supported or updated: AmigaOS (with gcc), courtesy of Alain Penders (2.2.2). Beos CYGWIN 1.1.4, courtesy of John Belmonte <email@example.com>. IBM AS400 via Visual Age on NT (primitive) IBM OS/390 Unix System Services Linux SuSE on OS390 Linux Mips, ARM Lynx HPUX 11, IA64 Mac OS X Server, courtesy of firstname.lastname@example.com (2.2.5). Mac Rhapsody MPE IX 6.0 NetBSD QNX RTP (QNX 6.0) Siemens Sinix UNICOS VMS 6.2, 7.1 Windows NT IA64 5.1. NT Porting Notes Always create tmp .bat file for actions if JAMSHELL is set. That way, if JAMSHELL is a .bat file itself, it can handle single-command actions with more than 9 cmd line args. COMSPEC is no longer examined: cmd.exe is always used instead. Only cmd.exe can execute the Jambase rules anyhow. Jam can be built with Borland C++ 5.5. OS2 fixes: InstallBin now works. Filenames are now downshifted, so mixed case works better there, too. file_dirscan() can now scan the root ("c:\" or "\") directory, which it couldn't handle before. var_defines now ignores OS=Windows_NT, because it conflicts with Jam's setting of OS (to NT). 5.2. Mac OS 8/9 Notes The support for Mac is curious at best. It runs under MPW. It requires CodeWarrior Pro 5, but no longer requires GUSI. Use Build.mpw to bootstrap the build. The Mac specific definitions in the Jambase are not intended to be of general purpose, but are sufficient to have Jam build itself. =============================================================================== =============================================================================== Release Notes for Jam 2.2 1. Release info: Jam 2.2 October 22, 1997 VERSION 2.2 PATCHLEVEL 1 2. Compatibility Jam 2.2 is a roll-up of 'Jam - make(1) redux' release 2.1+. Most of the changes described below were available before this, in the jam.2.1.plus.tar ball. The Jam 2.2 language is a superset of the 2.1 language; Jamfiles, Jambase, and other rulesets used in 2.1 can be used with the 2.2 language support. See 'Jambase Changes', below, to see if your Jamfiles need any changes to work with the 2.2 Jambase. 3. Changes Since 2.1 New product name: Jam. (Executable program is still named 'jam'.) Documentation rewritten; HTML versions supplied. 3.1 Changes to Jam Language Rules may now have more fields than just $(<) and $(>). Local variables are now supported. The expression 'if $(A) in $(B)' is now supported. New variable modifiers :U and :L result in uppercased or lowercased values. New variable modifier :P reliably results in parent directory of either a file or directory. (Previously, :D was used, but on VMS :D of a directory name is just the directory name.) The :S variable modifier now results in the _last_ suffix if a filename has more than one dot (.) in it. New predefined $(JAMDATE) variable is initialized at runtime for simple date stamping. New predefined variables $(OSVER) and $(OSPLAT) are used to distinguish among operating system versions and hardware platforms, when possible. New 'bind' qualifier on action definitions allows variables other than $(<) and $(>) to be bound with SEARCH and LOCATE paths. Action buffer size is no longer limited by MAXCMD. Instead, each line in an action is limited by MAXLINE, defined for each OS, and the entire action size is limited by CMDBUF. 3.2 Jambase Changes (See Jamfile.html) Jambase has been reworked to incorporate new language features. A handful of new utility rules has been added: makeString, makeDirName, etc. New HDRGRIST variable in Jambase allows for headers with the same name to be distinguished. LOCATE_TARGET now has a new flavor, LOCATE_SOURCE, that is used by rules that generate source files (e.g., Yacc and Lex). Header file includes now happen in the proper order. The limit of 10 include files has been eliminated. The old "Install" rule is no longer available. Use InstallBin, InstallFile, InstallLib, InstallMan, or InstallShell instead. 3.3 'jam' Changes (See Jam.html) 'jam' can now be built as a stand-alone program, with Jambase compiled into the executable. An external or alternate Jambase can still be referenced explicitly with -f. On command failure, 'jam' now emits the text of the command that failed. This is a compromise between the normal -d1 behavior (where commands were never seen) and -d2 (where commands are always seen). 'jam' now exits non-zero if it doesn't have a total success. A parse error, sources that can't be found, and targets that can't be built all generate non-zero exit status. The debugging levels (-d flags) have been slightly redefined. The supplied Jamfile now builds 'jam' into a platform specific subdirectory. This lets you use the same source directory to build 'jam' for more than one platform. The supplied Jamfile does not rebuild generated source files by default. (They are supplied with the distribution.) See Jamfile for more information. 4. Fixed Bugs The 'include' bug has finally been fixed, so that include statements take effect exactly when they are executed, rather than after the current statement block. This also corrects the problem where an 'include' within an 'if' block would wind up including the file one token after the 'if' block's closing brace. Credit goes to Thomas Woods for suggesting that the parse tree generation and parse tree execution be paired in their own loop, rather than having the parser execute the tree directly. The setting and extracting of grist has been regularized: normally, if you set a component of a filename (using the :DBSMG= modifiers), you are supposed to include the delimiters that set off the component: that is, you say "$(x:S=.suffix)", including the ".". But with grist it was inconsistent between setting and getting: setting grist required no <>'s, while getting grist included them. Getting grist continues to return the <>'s, but now setting grist can either include them (the new way) or not (the old way). 'actions together' now suppresses duplicate sources from showing up in $(>). Accessing variables whose names contained ['s (as happens with MkDir on VMS) wasn't working, because it treated the [ as an array subscript. Now [ and ] are, like :, handled specially so that they can appear in variable values. The 'if' statement now compares all elements in expressions; previously, it only compared the first element of each list. If a command line in an action is longer than MAXLINE (formerly MAXCMD), 'jam' now issues an error and exits rather than dumping core. If a Jamfile ended without a trailing newline, jam dumped core. This has been fixed. 5. Porting See jam.h for the definitive list of supported platforms. Since 2.1, support has been added for: Macintosh MPW Alpha VMS Alpha NT NT PowerPC BeOS MVS OE UNIXWARE QNX SINIX (Nixdorf) OS/2 Interactive UNIX (ISC), courtesy of Matthew Newhook 5.1 NT Support Fixes The NT command executor now handles multiple line actions, by writing multi-line actions to a batch file and executing that. Targets are universally lowercased on NT. (Matthew Newhook) Concurrent process support is fully enabled for NT. (Gurusamy Sarathy <email@example.com>) Path handling: Jam now knows that the directory component of "D:\" is "D:\", just as on unix it knows that the directory component of "/" is "/". It also now successfully gets the timestamp for "D:\" or just plain "\". 5.2 VMS Support Fixes VMS support is much, much better now. The path name manipulation routines (in pathvms.c) were more or less rewritten, and they now handle the vagaries of combining directory and file names properly. Targets are universally lowercased on VMS. Multi-line command blocks on VMS are now executed in a single system() call rather than separate ones for each line, so that actions can be DCL scripts. =============================================================================== =============================================================================== Release notes for Jam 2.1. 1. Release info: Jam 2.1 February 1, 1996 VERSION 2.1 PATCHLEVEL 0 2. Porting Linux is now supported. FREEBSD is now supported. SCO ("M_XENIX") now supported. NCR now supported. NEXT support from email@example.com (Karsten Thygesen) DECC support from email@example.com (Martin P.J. Zinser) I have changes for OS/2, but no way to test them. Volunteers? I have VMS multiprocess support, but no way to test it. Volunteers? 2.1. NT Support fixes. The NT support is considerably more real than it was in 2.0. Filent.c had its syntax error corrected, it no longer skips the first entry when scanning directories, and it handles string tables in archives (for long object file names). The Jambase was changed a bit to support the various C/C++ compilers on NT, although it has only been thorougly tested with MSVC20. You still need to set MSVCNT or BCCROOT to the root of the the compiler's directory tree, and you'll get an error if you don't set it (rather than getting a pile of mysterious errors). 2.2. Other porting fixes. SPLITPATH now set up for UNIX (:), NT (;), VMS (,) Jambase support for Solaris works better now: the location of AR is hardwired to /usr/ccs/bin/ar and it knowns "install" doesn't take -c. Solaris -- how the mighty have fallen. To handle Linux's wacko yacc, jamgram.h is now included after scan.h so that YYSTYPE is define. 3. Jambase Changes (see Jamfile.html) SubDir now computes the root directory for the source tree, if the variable naming the root directory isn't set in the environment. It counts the number of directory elements leading from the root to the current directory (as passed to SubDir) and uses that many "../"'s to identify the root. This means that to use SubDir you no longer have to have anything special set in the environment. InstallFile is now an alias for InstallLib. 'first' is now dependency of all pseudo-targets (all, files, exe, lib, shell), so that jamming any of these pseudo-targets also builds any dependencies of 'first'. The File rule definition in the Jambase was missing an &. The File rule now calls the Clean rule, so that installed files get cleaned. 4. Jam changes (see Jam.html) Variables may now be set on the command line with -svar=value. Targets marked with NOUPDATE are now immune to the -a (anyhow) flag. Previously, the MkDir rule would try to recreate directories that already exist when jam was invoked with -a. A new variable, $(JAMVERSION), joins the small list of built-in variables. It it set to the release of jam, currently "2.1". If an actions fails, jam now deletes the target(s). It won't delete libraries or other targets that are composites. This is now consistent with jam's behavior on interrupts (it deletes the targets). Jam had a nasty bug when setting multiple variables to the same value: if the first two variable names were the same, the variable value got trashed. This also affected "on target" variables if the first two targets were the same. For example: FOO on bar.c bar.c foo.c = a b c ; This would mangle the value of FOO for bar.c and foo.c. This has been fixed. Jam would generate bogus numbers when reporting the number of targets updated after an interrupt. It now is more careful about counting. The debugging flag -d has been extended. In addition to supporting -dx (turn on debugging for all levels up to x) there is also now -d+x (turn on debugging at only level x). The default output level is -d1 (-or d2 if -n is given); this can be turned off with -d0. The debug levels are listed in jam.1 and jam.h. The parsing debug output now uses indenting to indicate when one rule invokes another. =============================================================================== =============================================================================== Release notes for Jam 2.0. 1. Release info: Jam 2.0 March 10, 1994 VERSION 2.0 PATCHLEVEL 5 2. Porting Windows/NT is now (crudely) supported, courtesy of Brett Taylor and Laura Wingerd. COHERENT/386 is now supported, courtesy of Fred Smith. Solaris archive string table for long archive names is now supported, thanks to Mike Matrigali. 3. Compatibility Jam 2.0 syntax is a superset of Jam 1.0 syntax, and thus it can interpret a Jam 1.0 Jambase. The Jam 2.0 Jambase is a superset of the Jam 1.0 Jambase, and thus it can include a Jamfile written for Jam 1.0. 4. Changes from Jam 1.0 to Jam 2.0 4.1. Documentation changes New Jamfile.5 manual page, with lots of examples and easy reading. It replaces both the old "Examples" file as well as the old Jambase.5 manual page. jam.1 edited by Stephen W. Liddle and Diane Holt. 4.2. Jambase Changes (see Jamfile.5) 4.2.1. New rules: There are new rules to make handling subdirectories easier: SubDir, SubInclude, SubDirCcFlags, SubDirHdrs. There are new rules to handle file-specific CCFLAGS and HDRS: ObjectCcFlags and ObjectHdrs. Misc new rules: HardLink, InstallShell, MkDir. New rule "clean" that deletes exactly what jam has built, and "uninstall" that deletes exactly what was installed. New rules for handling suffixes .s, .f, .cc, .cpp, .C. 4.2.2. Old rules: The InstallBin, Lib, Man, and the new Shell rules now take the destination directory as the target and the files to be copied as sources. These rules formerly took the files to be copied as targets, and used built-in destination directories of $(BINDIR), $(LIBDIR), $(MANDIR), and $(BINDIR). The InstallBin, Lib, Man, and Shell rules use the install(1) program now, instead of doing their own copying. The Cc rule now uses -o when possible, rather than moving the result. Some platforms (Pyramid?) have a broken -o. Jambase rules taking libraries, objects, and executables now all ignore the suffixes provided and use the one defined in the Jambase for the platform. Stupid yyacc support moved out of Jambase, as jam is its only likely user. Jambase now purturbs library sources with a "grist" of SOURCE_GRIST. 4.2.3. Misc: The names of the default rules defined in Jambase have been lowercased and un-abbreviated, to be more imake(1) like. The Jambase has been reorganized and sorted, with VMS and NT support moved in from their own files. The Jambase has been relocated on UNIX from /usr/local/lib/jam to /usr/local/lib. 4.3. Jam changes (see jam.1) 4.3.1. Flags: New -a (anyhow) flag: means build everything. New -j<x> flag: run jobs in parallel. Old -t now rebuilds the touched target, rather that just the target's parents. -n now implies -d2, so that you see what's happening. The debug level can be subsequently overridden. New -v to dump version. 4.3.2. Rules: New ALWAYS rule behaves like -t: always builds target. New EXIT rule makes it possible to raise a fatal error. New LEAVES rule which say target depends only on the update times of the leaf sources. New NOUPDATE rule says built targets only if they don't exist. NOTIME has been renamed NOTFILE, to more accurately reflect its meaning (it says a target is not to be bound to a file). 4.3.3. Variables: New special variable JAMSHELL: argv template for command execution shell. Variables, both normal and target-specific, can have their value appended with the syntax "var += value" or "var on target += value". "?=" is now synonymous with "default =". Imported enviroment variable values are now split at blanks (:'s if the variable name ends in PATH), so that they become proper list values. 4.3.4. Misc: Files to be sourced with "include" are now bound first, so $(SEARCH) and $(LOCATE) affect them. They still can't be built, though. New modifier on "actions": "existing" causes $(>) to expand only those files that currently exist. 4.3.5. Bug fixes: When scanning tokens known to be argument lists (such as the arguments to rule invocations and variable assignment), the parser now tells the scanner to ignore alphabetic keywords, as all such lists terminate with punctuation keywords (like : or ;). This way, alphabetic keywords don't need to be quoted when they appear as arguments. The scanner has been fixed to handle oversized tokens, unterminated quotes, unterminated action blocks, and tokens abutting EOF (i.e. a token with no white space before EOF). The progress report "...on xth target..." used to count all targets, rather than just those with updating actions. Since the original pronouncement of targets to be udpated included only those with updating actions, the progress report has been changed to match. 'If' conditionals now must be single arguments. Previously, they could be zero or more arguments, which didn't make much sense, and made things like 'foo == bar' true. The comparison operator is '=', and '==' just looked like the second of three arguments in the unary "non-empty argument list" conditional. Header files indirectly including themselves were mistakenly reported as being dependent on themselves. Recursing through header file dependencies is now done after determining the fate of the target. The variable expansion support was expanding $(X)$(UNDEF) as if it were $(X). It now expands to an empty list, like it should. The UNIX version of file_build() didn't handle "dir/.suffix" right. Now it does. The VMS command buffer was assumed to be as large as 1024 bytes, which isn't the case everywhere as it is related to some weird quota. It has been lowered to 256. $(>) and $(<) wouldn't expand in action blocks if the targets were marked with NOTIME. Now they expand properly. Malloc() return values are now checked. The variable expansion routine var_expand() is now a little faster, by taking a few often needed shortcuts. The VMS version of file_build() used the wrong length when re-rooting file names that already had directory compoents. This was fixed. Various tracing adjustments were made. 5. Limitations/Known Bugs The new Windows/NT support has only been marginally tested. It is dependent on certain variables being set depending on which compiler you are using. You'll need to look in the file Jambase and see what variables are expected to be set. The VMS support has been tested, courtesy of the DEC guest machine, but has not been hammered fully in release 2.0. It was used quite a bit in Jam 1.0. Jam clean when there is nothing to clean claims it is updating a target. Because the include statement works by pushing a new file in the input stream of the scanner rather than recursively invoking the parser on the new file, multiple include statements in a rule's procedure causes the files to be included in reverse order. If the include statement appears inside an if block, the parser's attempt to find the else will cause the text of the included file to appear after the first token following the statement block. This is rarely what is intended. In a rule's actions, only $(<) and $(>) refer to the bound file names: all other variable references get the unbound names. This is a pain for $(NEEDLIBS), because it means that library path can't be bound using $(SEARCH) and $(LOCATE). With the -j flag, errors from failed commands can get staggeringly mixed up. Also, because targets tend to get built in a quickest-first ordering, dependency information must be quite exact. Finally, beware of parallelizing commands that drop fixed-named files into the current directory, like yacc(1) does. A poorly set $(JAMSHELL) is likely to result in silent failure.
# | Change | User | Description | Committed | |
#69 | 25730 | Jason Gibson | Source update for the 2.6.1 release. | ||
#68 | 16008 | Matt Attaway | Update Jam release notes for Jam 2.6 release | ||
#67 | 9954 | laurette | Update for release of 2.6. | ||
#66 | 4409 | Perforce staff |
Drop 'rc3' moniker of jam-2.5. Folded rc2 and rc3 RELNOTES into the main part of the document. Built new tar/zip balls. Only 16 months later. |
#65 | 3070 | Perforce staff |
Two Jambase changes: one fix, one enhancement. The fix: if a Jamrules invoked SubDir to establish other roots, and that Jamrules isn't in the current directory, the roots it established were wrong. The enhancement: 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. Bug fix and change documented only in RELNOTES. |
#64 | 3069 | Perforce staff |
Remove temp .bat files created on NT. Bug fix documented in RELNOTES. |
#63 | 3057 | rmg |
Fix mysterious rebuild problem: in an attempt to make 'jam -dc' output report headers updates more accurately, internal (header collection) targets were being bound as T_BIND_PARENTS so that they could carry the timestamp of the actual source file. But that caused the fate of the internal node to be marked as T_FATE_NEEDTMP if anything they included was newer, and that easily happens among header files (something is always newer than something else). Now internal targets carry their parents time, but with T_BIND_UNBOUND, like other NOTFILE targets. Bug fix documented in RELNOTES. === computer:1666: Change 43415 by seiwald@play-seiwald on 2003/04/04 09:36:25 |
#62 | 2852 | rmg |
SubDir's support for an externally set TOP variable was broken in 2.5rc1. It now works as it did in 2.4. Further, using SubDir to include a subpart of an SubDir tree now works. Previously, you could only include the root of another SubDir tree. For example, SubDir ALL src builds ; SubInclude ALL src server support ; Essentially includes the ../server/support/Jamfile, without getting confused as to the current directory. Bug fix documented in RELNOTES. === computer:1666: Change 42285 by seiwald@waffle-cyg-seiwald on 2003/03/05 08:52:10 |
#61 | 2851 | rmg |
Minor Cray porting: make hashitem()'s key value unsigned so we're guaranteed no integer overflows. Porting change. === computer:1666: Change 41931 by seiwald@play-seiwald on 2003/02/25 13:10:31 |
#60 | 2850 | rmg |
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). Porting change, noted in RELNOTES. === computer:1666: Change 41285 by evalynne@evalynne-bld-mac on 2003/02/05 11:47:19 |
#59 | 2849 | rmg |
WinXP IA64 porting: set MSVCNT to the root of the SDK and MSVCVer to Win64. Jam: change handle type to long long (too much to include windows.h?); bury IA64 in the library path in Jambase. timer.cc: use long long for timer. Also pulled over main's Jamsh.bat and extended it to handle the IA64 SDK environment when MSVCVer=Win64. Finally wrote a TarBall rule for NT that works (still uses tar and cp, but written in cmd syntax), so 'jam api' works. Porting changes, noted in RELNOTES. === computer:1666: Change 40867 by perforce@tridium on 2003/01/24 09:01:01 |
#58 | 2845 | rmg |
Make jam 2.5rc2 build with BorlandC 5.5 Porting Change, note in RELNOTES. === computer:1666: Change 40450 by anton@anton-diogenes on 2003/01/21 10:26:05 |
#57 | 2615 | rmg |
Remove NT FQuote rule, as (at least with the command shell I use), \" is required to pass quotes on the command line. Fix to bug introduced by 2.5rc1. Noted in the RELNOTES (for the moment) as a change between 2.5rc1 and 2.5rc2. === computer:1666: Change 40127 by seiwald@tricks-seiwald on 2003/01/14 16:20:25 |
#56 | 2614 | rmg |
Fix to includes of includes not being considered, broken by 2499. Details taken from email to jamming: The challenge is to make included includes appear as direct includes, so that they get considered. This used to work by recursion, because each TARGET node computed the summary of its includes -- the hfate and htime -- along with the summary of its dependents -- the fate and time. Alas, that previous arrangement confused make1() into treating headers as direct dependencies during the build phase. A.o | A.c -- A.h (Read depends down, includes across) (Failed build of A.h aborts build of A.c) The fix to the confused make1() problem was to consolidate the special handling of includes by having make0() tack onto a target's list of dependendies any of the target's dependents' includes. Unfortunately, this fix did not recurse: if the target's dependents' includes included other files, those files were not added to the target's dependencies. A.o | A.c -- A.h -- B.h -- C.h is rewritten to: A.o | \ A.c A.h -- B.h -- C.h (A.o depends on A.h, but not B.h or C.h. This is the current, broken state of jam 2.5rc1.) Matt's bugfix added some recursion at this point, by transitively appending includes' includes onto the includes chain. But, as he found out (and I did before), this can slow make0() down considerably, as typically header files all include each other and you wind up with lots of really long chains. A.o | A.c -- A.h -- B.h -- C.h is rewritten to: A.o | A.c -- A.h -- B.h -- C.h - B.h - C.h - C.h (Matt's fix: if the .h files include each other, the includes chains get very long.) The final(?) fix I have is relatively simple, but is an extra step: to have make0() replace a target's includes chain with a single pseudo-target whose dependencies are the original target's includes. That pseudo-target gets passed to make0(), which then recursively consolidates its fate and time. This then makes a target's includes fate and time available in a single target hanging off the original target. A.o | A.c -- A.h -- B.h -- C.h is rewritten to: A.o | \ A.c A.c-includes | \ A.h A.h-includes | \ B.h B.h-includes | C.h (New pseudo-target xxx-includes recursively consolidates fate and time of all included targets.) While this new scheme does add a node for every include file, it is linear, rather than exponential, and the time is pretty much neglible. User-visible bugfix not documented, because there is no place in RELNOTES for release-candidate fixes. Bumped patchlevel to 2.5rc2. |
#55 | 2613 | rmg |
Fix 'actions updated' broken by 2487. The idea was that dependents of NOTFILE targets (like "all") shouldn't be T_FATE_NEWER (newer than their parents), but instead left as T_FATE_STABLE. That way the new 'jam -dc' (display "causes") option didn't report spurious "newer" targets. NOTFILE targets have a 0 timestamp, making their children always look newer, and the change was to suppress this. But instead of checking for NOTFILE parents, the code checked for missing parents. And that broke 'actions updated', because it relied on T_FATE_NEWER even if the parent was missing. Now it checks for p->binding != T_BIND_UNBOUND (the mark of a NOTFILE target), rather than p->binding == T_BIND_EXISTS (the mark of an existing real target). === computer:1666: Change 39756 by seiwald@play-seiwald on 2003/01/03 14:53:11 |
#54 | 2612 | rmg |
Fix three uninitialized memory reads: 1. var_expand() wasn't checking its input length when testing for the "$(<)" shortcut. 2. Solaris does a strlen() of its sscanf() input, and ar_hdr wasn't terminated. 3. Solaris archive entries / and //xxx (the string table) generated calls to time_enter() with an uninitialized file name. Bug fixes documented in RELNOTES. === computer:1666: Change 39713 by seiwald@play-seiwald on 2003/01/02 14:46:07 |
#53 | 2568 | rmg | Update the release date in the RELNOTES. | ||
#52 | 2565 | rmg |
Put . in PATH for GenFile so jam can build itself without . in the global PATH. Porting change documented in RELNOTES. === computer:1666: Change 39602 by seiwald@play-seiwald on 2002/12/27 18:10:16 |
#51 | 2564 | rmg |
Use MSVCDIR instead of MSVCNT if MSVCNT isn't set. Microsoft changed the name to MSVCDIR in VC 6.0. Porting change documented in RELNOTES. === computer:1666: Change 39600 by seiwald@play-seiwald on 2002/12/27 18:06:42 |
#50 | 2563 | rmg |
Big AIX archive support. Untested. Bug fix documented in RELNOTES. === computer:1666: Change 39590 by seiwald@play-seiwald on 2002/12/27 16:40:07 |
#49 | 2562 | rmg |
Grist jam temp file names with pid on NT so as to ensure uniqueness. Bug fix documented in RELNOTES. === computer:1666: Change 39577 by seiwald@tricks-seiwald on 2002/12/27 15:55:21 |
#48 | 2561 | rmg |
RMDIR definition for NT and a default to $(RM) everywhere else. New feature documented in RELNOTES. === computer:1666: Change 39570 by seiwald@play-seiwald on 2002/12/27 15:32:38 |
#47 | 2560 | rmg |
Suppress last blank in variable expansion in actions. I really don't think this could possibly hurt anything. Bug fix documented in RELNOTES. === computer:1666: Change 39567 by seiwald@play-seiwald on 2002/12/27 15:23:10 |
#46 | 2559 | rmg |
Fix 'var on target ?= value' so that var is only set if it did not have a target-specific value. Previously, it would just overwrite the var's value. Bug fix documented in RELNOTES. === computer:1666: Change 39566 by seiwald@play-seiwald on 2002/12/27 14:44:01 |
#45 | 2557 | rmg |
Shuffle mechanism for optional Jamrules includes: now no error message is issued for a missing include file marked with NOCARE. Previously, we used Glob to try to find the optional Jamrules files, but on VMS that doesn't work so well: Glob returns all uppercase file names with .'s at the end, which doesn't match "Jamrules" at all. The NOCARE part is a user-visible change documented in RELNOTES. === computer:1666: Change 39273 by seiwald@waffle-cyg-seiwald on 2002/12/19 22:44:03 |
#44 | 2529 | rmg |
Fix "on target" variables during header scan, from Matt Armstrong. 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 and with the "on target statement" syntax. The manifestation of this was if a file #included itself, HdrRule would accidentally set HDRRULE/HDRSCAN globally, and then all files (executables, etc) would get scanned for includes. While this borrows from Matt's fix, it is a slightly different implementation. User visible fix documented in RELNOTES. === computer:1666: Change 39095 by seiwald@play-seiwald on 2002/12/17 14:00:58 |
#43 | 2513 | rmg |
Set the version number and patchlevel for the 2.5rc1 release. In RELNOTES, don't document the different behavior when a "return" is not the last statement executed in rule definition as a non-backward-compatible change (in the "Compatibility" section). |
#42 | 2509 | rmg | Fix an old typo. | ||
#41 | 2508 | rmg | First pass edit on the RELNOTES for 2.5. | ||
#40 | 2503 | rmg |
No longer link jam with advapi32.lib -- it isn't needed and it keeps moving. No functional change. === computer:1666: Change 38674 by seiwald@tricks-seiwald on 2002/12/10 12:02:55 |
#39 | 2502 | rmg |
Update RELNOTES to reflect the addition of history comments, the removal of the /MR name, and the rewrite of Jam.html. === computer:1666: Change 38641 by seiwald@play-seiwald on 2002/12/09 22:04:15 |
#38 | 2499 | rmg |
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(). This not only fixes the bug, but removes some complexity as well. Bug fix documented in RELNOTES. === computer:1666: Change 38399 by seiwald@play-seiwald on 2002/12/03 16:00:40 |
#37 | 2497 | rmg |
Jambase no longer announces the compiler on Windows. It doesn't announce anything else. User visible change documented in RELNOTES. === computer:1666: Change 38194 by seiwald@tricks-seiwald on 2002/11/25 15:02:57 |
#36 | 2494 | rmg |
Remove bogus search() call in 'on' statement processing, as pointed out by Ingo on the jamming mailing list. === computer:1666: Change 38000 by seiwald@play-seiwald on 2002/11/18 12:19:24 |
#35 | 2492 | rmg |
Make jam on solaris sparc set OSPLAT to sparc. This will change the build directory for solaris executables to bin.solarissparc! User visible change documented in RELNOTES. === computer:1666: Change 37638 by seiwald@play-seiwald on 2002/11/05 14:48:06 |
#34 | 2491 | rmg |
Some consting in jam to make it more compilable by C++ compilers. No functional change. === computer:1666: Change 37433 by perforce@perforce on 2002/10/30 16:08:51 Recreational const-ing of jam, for compilers that don't allow "string" to be passed as a non-const char *. This included a few places where we were modifying what could possibly have been read-only storage, oddly enough. No functional change. === computer:1666: Change 37602 by seiwald@play-seiwald on 2002/11/04 17:25:40 |
#33 | 2490 | rmg |
Jam langauge work: make 'return' actually return from the rule, rather than just setting the return value. Introduce new break/continue statements for managing loops. User visible change to be documented in Jam.html. === computer:1666: Change 37200 by seiwald@play-seiwald on 2002/10/22 15:41:28 Gross rework of Jam.html documentation, including: - the description of parameters for rules - description of -g flag - a new description of targets - more about rules and their return values - better separation of rules and updating actions - putting borders around the tables (Undocumented) change to documentation. === computer:1666: Change 37551 by seiwald@waffle-cyg-seiwald on 2002/11/03 23:17:12 Document jam's new and working break/continue/return statements. === computer:1666: Change 37574 by seiwald@play-seiwald on 2002/11/04 13:13:01 |
#32 | 2488 | rmg |
Remove the /MR suffix from Jam. === computer:1666: Change 37146 by seiwald@play-seiwald on 2002/10/21 15:23:18 |
#31 | 2487 | rmg |
Subtle jam adjustments in make0() to improve tracing output, and some new tracing output (-dc: show 'causes'). First, make0() now takes a pointer p to the parent, rather than just the parent time ptime. This helps when setting the T_FATE_NEWER: it's only set if the target is newer than the parent _and the parent exists_. Otherwise, T_FATE_NEWER gets set for all dependenents of NOTFILE targets. When determining fate, don't make the final check to see if we need to downgrade T_FATE_NEWER to T_FATE_STABLE: fate is always T_FATE_NEWER or T_FATE_STABLE, so we might as well just set it to T_FATE_STABLE anyhow. New -dc output shows what targets are causing things to get rebuilt. User visible change documented in RELNOTES. === computer:1666: Change 36605 by seiwald@play-seiwald on 2002/09/28 18:26:32 |
#30 | 2486 | rmg |
Fooling around with jam's -d flag, to make it possible to specify useful display output without turning on loads of debugging crud. New -dd flag to display dependencies. Provisional changes not yet documented in jam.html. === computer:1666: Change 36374 by seiwald@play-seiwald on 2002/09/19 15:17:20 Jam -d change: the message "...using xxx..." now only shows up with -da, rather than in the default output. It made it hard to see what was happening when there were a lot of temp files lying around. User visible change documented in RELNOTES. === computer:1666: Change 36430 by seiwald@play-seiwald on 2002/09/23 11:34:12 Put jam -dx flags into 'jam -h'. Change to undocumented behavior (jam -h's output). === computer:1666: Change 36551 by seiwald@play-seiwald on 2002/09/26 14:39:54 Document jam's new -d debug flags. === computer:1666: Change 37367 by seiwald@waffle-cyg-seiwald on 2002/10/28 16:03:46 jam -n now implies -dax, just as the old jam -n implied -d2. Change to unreleased functionality. === computer:1666: Change 37550 by seiwald@waffle-cyg-seiwald on 2002/11/03 23:12:15 |
#29 | 2485 | rmg |
Beos updates for jam from "Ingo Weinhold" <firstname.lastname@example.com>. Porting change. === computer:1666: Change 35634 by seiwald@play-seiwald on 2002/08/16 11:42:39 |
#28 | 2484 | rmg |
Rework make0() to consider headers when deciding whether to update a temporary source file. This makes it possible to have generated, temporary source files that must be regened because an included header has been updated. === computer:1666: Change 35018 by seiwald@play-seiwald on 2002/07/17 10:41:35 Followon to 35018: actually update a "needtmp" target (duh). === computer:1666: Change 35023 by seiwald@play-seiwald on 2002/07/17 11:10:16 Fix to 35018, which handled out-of-date header files built from temporary sources. Unfortunately, the change made circular header dependencies (which are legion) get reported. Now the circular dependency reporting is done in the call to make0() rather than at the beginning of make0(), and step 3b (the header recursion) simply skips that check. Change to unreleased behavior. === computer:1666: Change 36247 by seiwald@waffle-cyg-seiwald on 2002/09/16 16:15:10 |
#27 | 2483 | rmg |
Jam macosx changes: use 'ar' instead of libtool, as ar can do incremental updates. New support for the BSD style long filenames in archives. Porting change. === computer:1666: Change 34993 by seiwald@oswald-seiwald on 2002/07/16 12:01:32 Fix archive scan (solaris and FreeBSD style) broken by change #34993. I _think_ all three forms of archive entries now work again (traditional, solaris string table, and macosx #1/xxxx ). === computer:1666: Change 35027 by seiwald@play-seiwald on 2002/07/17 11:31:20 Fix archive scan supposedly fixed in 35027 (which was to fix 34993). Now it works on MacOSX again. === computer:1666: Change 35057 by perforce@cardtrick on 2002/07/17 16:11:01 |
#26 | 2481 | rmg |
Put . in the path of jam0, at long last. === computer:1666: Change 34039 by seiwald@tricks on 2002/06/03 11:05:04 Jam relnote about $(EXENAME) in the Makefile. User visible change being documented in RELNOTES. === computer:1666: Change 34517 by seiwald@play-seiwald on 2002/06/22 00:19:32 |
#25 | 2480 | rmg |
Rewrite jam's SubDir rule to allow multiple roots. Infrastructure change. === computer:1666: Change 33320 by seiwald@thin on 2002/05/13 10:10:50 |
#24 | 1658 | rmg | 2.4rc2 becomes 2.4 (final). | ||
#23 | 1617 | rmg | Branding 2.4rc2 | ||
#22 | 1580 | rmg |
Changes for 2.4beta. Yes, Christopher, I brashly said "2.4-dev WAS the beta" at tea yesterday, but I've since come to my better instincts (got chicken?), so this one will say rmg $ jam -v Jam 2.4beta. OS=LINUX. Copyright 1993-2002 Christopher Seiwald. for a week or two, at least. |
#21 | 1572 | Perforce staff |
Fix InstallInto to handle multiple sources properly, thanks to Stephen Goodson. Bug fix documented in RELNOTES. |
#20 | 1571 | Perforce staff |
MINGW port by Max Blagai. Porting change documented in RELNOTES. |
#19 | 1570 | Perforce staff |
New SoftLink rule, courtesy of David Lindes. User visible change documented in RELNOTES. |
#18 | 1566 | rmg |
Correct Michael Allard's name in the RELNOTES. doc change only. |
#17 | 1565 | Perforce staff |
Suffix yyacc generated symbols with _t to ensure they don't conflict with other symbols, as RULE was. |
#16 | 1553 | Perforce staff |
New -g flag to reorder targets so that they are built according to their sources update times, rather than simply the order in which they appear in the Jamfiles. This flag is experimental: it isn't clear if sorting on target time is adequate to ensure newest sources are seen first, and it isn't clear that this is actually useful at all. Undocumented except for a note in RELNOTES. |
#15 | 1545 | Perforce staff |
Handle TEMPORARY targets with multiple parents better (but not perfectly). Previously, a TEMPORARY target that had no timestamp of its own (t->time == 0, due to the target being missing) took on its parent's timestamp ptime. The target's timestamp is used for four things: 1. It is passed as the target's timestamp to its children, in case they are also TEMPORARY targets (and thus need their parent's timestamp). 2. It is compared against the target's children's timestamps, to see if the target is out of date. 3. It is compared against the target's parent time, to see if the target is newer than its parent (for 'actions updated'). 4. It is saved as the target's timestamp, for when the target's parents need to see if they are out of date. The problem was with (4) and multiple parents: the first parent's timestamp would become the target's, which could then inadvertantly outdate another parent older than the first but otherwise up-to-date. With this change a missing TEMPORARY target is left with a zero timestamp, and the four above cases are modified for T_BIND_PARENT targets as such: 1. The parent's timestamp is passed directly to the target's children. 2. The parent's timestamp is compared directly against the target's children's timestamps. 3. The parent's timestamp is no longer compared against the target's own, as it could never be older. 4. The target's timestamp remains zero (or the newest of the target's children's), so as not to outdate other parents. Oddly enough, this change mostly just removes the setting of 't->time = ptime' (leaving t->time zero), and adds only a little extra logic to use ptime directly when needed. It also removes the 'pbinding' parameter to make0(), as its only use (to indicate if the parent was missing) can better be divined from !ptime. Perfection, as they say, isn't achieved when there is nothing more to add, but nothing more to take away. We'll see if I removed enough this time. Bug fix documented in RELNOTES. |
#14 | 1535 | Perforce staff | Define YYMAXDEPTH to 10000 to handle right-recursive rules. | ||
#13 | 1533 | Perforce staff | Relnotes for Match, indirect rules, and 'actions together' fix. | ||
#12 | 1374 | rmg |
Fixed broken $(v[1-]), which always returned an empty expansion. Thanks to Ian Godin <email@example.com>. This change is Ian's original, "surgical-strike" fix. We may yet replace it with something different, but this at least gets the mainline fixed for now. |
#11 | 1356 | rmg |
Tweak about Glob description, as suggested by firstname.lastname@example.com |
#10 | 1346 | rmg |
Add an option that gets Jam to exit as soon as any target fails (as if it had received an "interrupt") Integrates Change 233 by Peter Glasscock. Added to Jam.html & RELNOTES - rmg |
#9 | 1344 | rmg |
Under NT, default $(MV) to "move /y" in Jambase. Logically (and in the integ hhistory) integrates Change 390 by Eric Scouten. Cc: firstname.lastname@example.com |
#8 | 1319 | rmg |
Jam 2.3 + Perforce's internal changes. This change is a drop of the Perforce internal Jam changes since the 2.3 public release. The individual changes represented herein are preserved in the //guest/richard_geiger/intjam/ branch. The intent of this drop is to provide a base, from which other contributors' Jam branches may be integrated into. It is not intended to become a packaged release in this state. We will be integrating changes from other users prior to creating the next packaged release. Please refer to the src/RELNOTES file for an overview of the changes present in this integration. - Richard Geiger Open Source Engineer at Perforce |
#7 | 556 | Perforce staff |
Patch release jam 2.3.2: reverse NOCARE change. NOCARE once again applies to targets with source and/or actions, so that buildable header files get built. |
#6 | 486 | Perforce staff |
Jam 2.3. See RELNOTES for a list of changes from 2.2.x. Just about every source file was touched when jam got ANSI-fied. |
#5 | 211 | Perforce staff | Jeff Sickel's Mac OS X port. | ||
#4 | 5 | Perforce maintenance | Jam/MR 2.2.4 (HDRPATTERN, JAMUNAME, JAMSHELL, plus misc tweaks) | ||
#3 | 4 | Perforce maintenance | Jam/MR 2.2.2 (AmigaOS support) | ||
#2 | 3 | Perforce maintenance | Jam/MR 2.2.1 (fix for NT handle leak) | ||
#1 | 2 | laura | Add Jam/MR 2.2 source |


text:
Corporate donors to St. Paul's Cathedral, London
Blessed are the rich, for they shall inherit the earth
Matthew 5:5 | New Testament (Church of England edition, 2012)
Last night in London, police and bailiffs with the blessing of the Church of England and under orders from The City of London Corporation, evicted the Occupy protesters from the steps of St. Paul's Cathedral. The protest camp which has been a fixture in central London for over four months sought to voice opposition to corporate greed. It was perhaps appropriate, therefore, that St. Paul's Cathedral was the location they chose to voice that opposition. For surely there can be no greater example of the power of corporate greed to twist and pervert the society in which it manifests.
Roughly two thousand years ago, if we accept the version of history upon which the Christian Churches are based, Jesus Christ cast the money lenders and profiteers from the sacred grounds of the temple. One does not need to believe that to be historical fact to appreciate the symbolism of the story, and by extension to understand the stated values of Christianity. Personally I do not consider the bible to be a work of historical fact. However, and I really cannot stress this enough, I am not being critical when I make that judgement. Indeed, there's a sense – and it's a very real sense – in which I consider sacred mythopoetry, such as that found in the bible, to be more important than historical fact. It's absolutely vital of course, to be aware of the differences between the two, but there's no sense in which historical fact disproves or invalidates myth. They are two separate categories of knowledge and fulfil two very different functions.
Take, for example, the Christian story of The Last Supper. It is one of the most important stories in our culture (in the words of Gregory Bateson, "it's all made of stories, you know") and I think it is illuminating; genuinely illuminating; that even as western civilisation has lost touch with its mythology, so we have seen the destructive rise of fast food and McDonald's culture. I'm not saying one caused the other; I'm saying that within our ecology of mind, a particular pattern is manifesting in a number of different ways. Bateson discussed the Last Supper in one of his lectures…
"Host / guest" relationships are more or less sacred all over the world, as far as I know. And are of course one of the reasons why, to go back to where we started, the bread and the wine happen to be sacred objects.
Don't […] get it upside down. The bread and the wine are not sacred because they represent Christ's body and blood. The bread and the wine are primarily sacred, because they are the staff of life; the staff of hospitality… of guests… of hosts… of health and all the rest of it. And so, secondarily, we equate them with Christ.
The sacredness is real. Whatever the mythology. The mythology is the poetical way of asserting the sacredness. And a very good poetical way of asserting it. But bread is sacred whether or not you accept the Christian myth. And so is wine. Unless you're determined to eat plastic.
Gregory Bateson | Lecture on consciousness and psychopathology (approx 50 minutes in)
Anyway, my point is that there's a whole baby/bathwater thing going on when we embrace secularism without finding an adequate replacement for those positive elements provided by our cultural mythopoetry. There's no inherent reason for us to stop asserting the primary sacredness of bread and wine when we cease to believe in Jesus as the Son of God. Yet nonetheless, that's precisely what we have done. And I don't necessarily think the gains we've made are adequate compensation for our losses.
Worst of all though, is when the very people who have appointed themselves as guardians of our mythology are themselves its ultimate betrayers. Christ's casting out of the money-lenders and profiteers is right up there with The Last Supper when it comes to important stories. It would be more than a little trite to suggest that Jesus was the original Occupy protester, but there are certainly parallels to be drawn. And although I have been critical of certain aspects of the Occupy Movement on this blog in the past, it's always been constructive criticism. I very much share the majority of their goals and any critical comments from me are merely suggestions as to how I feel the movement might be more effective. Precisely because I want Occupy to be more effective.
And Jesus went into the temple of God, and cast out all them that sold and bought in the temple, and overthrew the tables of the moneychangers, and the seats of them that sold doves, And said unto them, It is written, My house shall be called the house of prayer; but ye have made it a den of thieves.
Matthew 21:12-13 | King James Version
Matthew leaves us under no illusions as to whose side Jesus would have taken in last night's eviction. And any member of Church of England clergy who believes that Christ would have been wearing a police uniform… or even the robes of the church… is guilty of staggering self delusion. Especially when you take a look at the list of those who offer "financial support" to St. Paul's Cathedral.
Blessed are the rich (just pretend we didn't say that, OK?)
A few weeks ago I visited the St. Paul's Cathedral website and clicked on a page called "Our Supporters". The page contained a lengthy list of corporate (and other) donors… those who had made substantial (in excess of UKP £50,000) financial contributions to the Cathedral. Some time over the past few weeks someone at St. Paul's realised that this was bad Public Relations, given that they were soon to send the police to remove people from the Cathedral steps… people who were protesting against those very corporations. And so they removed the list of donors, replacing it with a bland statement of thanks to staff members past and present.
Talk about spineless! Here we have an organisation that claims to follow the path of a man who explicitly opposed the very practices they now indulge in (inviting the money-lenders into the temple). More than that, they clearly know it, which is why they have quietly removed their donor list. Unfortunately for them they were not entirely thorough. Although they have completely purged the list from their website, it appeared on the last page of their most recent newsletter (available as a PDF file). And just in case they decide to purge that too, I have reproduced the list in full here. I have highlighted a few names that I think are particularly interesting, though the entire list makes for illuminating reading…
The Dean and Chapter of St Paul's Cathedral would like to thank all those who contributed to our £40 million campaign to conserve and restore St Paul's Cathedral in celebration of the Cathedral's 300th anniversary. We would specifically like to thank donors of £50,000 and over:
Robin Fleming and Family
Sir Paul and Lady Getty
The Garfield Weston Foundation
The City Bridge Trust
The St Paul's Cathedral Trust in America
The Lennox Hannay Charitable Foundation
The Cadogan Charity
Lloyds TSB Group plc
An Independent Trust Associated with Barclays
City of London Corporation
City of London Endowment Trust
The Schroder Foundation
Goldman Sachs International
Mark Pigott OBE
The Wolfson Foundation
The Garfield Weston Trust for St Paul's Cathedral
The Worshipful Company of Mercers
The Sunley Foundation
UBS Investment Bank
Mr Richard & Miss Clementine Hambro
McKinsey & Company
Roger Gabb
The Ernest Kleinwort Charitable Trust
CHK Charities Ltd
David Mayhew CBE
N M Rothschild & Sons Ltd
Sir Brian Williamson CBE
29th May 1961 Charitable Trust
Dr Yury Beylin
Brunswick Group
Mr and Mrs William R Miller CBE
Lennox and Wyfold Foundation
Hugh & Catherine Stevenson
Skandinaviska Enskilda Bank
Roger Carlsson
The Clothworkers' Foundation
The Headley Trust
Nicholas Oppenheimer
Prudential Plc
Simon & Virginia Robertson
The Capital Group
Lexicon Partners
Slaughter & May
Barry Bateman
Charterhouse Capital Partners LLP
Electra Partners LLP
Land Securities
Standard Chartered Plc
JP Morgan Cazenove
J.P. Morgan
Cantor Fitzgerald L.P
BGC Partners
Dulverton Trust
CMS Cameron McKenna LLP
The Freemasons' Grand Charity
David Barnett
Len Blavatnik
Canary Wharf Group Plc
Lord Cockfield Memorial Trust
The Drapers' Company
Man Group Plc Charitable Trust
London Stock Exchange
The Worshipful Company of Grocers
Stewart Newton
Sir David Walker
Sir Roger & Lady Gibbs
Sir Robert & Lady Finch
Peter and Stephanie Chapman
Fidelity UK Foundation
English Heritage
Wyfold Foundation
American Express
The Coutts Charitable Trust
The British Land Company Plc
HSBC Holdings Plc
Morden College
Aldgate & All Hallows Barking Exhibition Foundation
Jon B Lovelace
Richard & Ellen Sandor Family Foundation
The Scholl Foundation
And here's the relevant page of the newsletter:

subset: commoncrawl


text:
Please note that the recommended version of Scilab is 2024.1.0. This page might be outdated.
See the recommended documentation of this function
Description of the different layouts and constraints for uicontrols and figures.
Layouts control how figures or frame
uicontrols manage the positions and display of nested uicontrols.
Layout options can be created/set using the createLayoutOptions function.
- nolayout | none
No layout is applied, nested uicontrols do not have any constraint.
Nested uicontrols must be positionned manually and their size is fixed.
- grid
A grid layout is applied to all nested uicontrols.
Nested uicontrols are positionned in a grid defined in
from left to right and top to bottom.See grid layout options for information on grid layouts.
- border
A border layout is applied to all nested uicontrols.
Nested uicontrols are positionned on a border of the parent frame or in the center.
See border layout options for information on border layouts.
- gridbag
A gridbag layout is applied to all nested uicontrols.
Nested uicontrols are positionned on a virtual grid as in the grid layout but can occupy several grid spaces, fill empty space horizontally or vertically.
The gridbag layout allows finer control over the uicontrol behaviour during resize.
see gridbag layout options for information on gridbag layouts.
Layout Constraints
Constraints define behaviour of a uicontrol inside a layout.
All nested elements in a layout must define its constraint
attribute relative to their parent layout. Layouts are thus defined on the parent while constraints are defined on the children.
Constraints can be created/set using the createConstraints function.
See also
- uicontrol_properties — Description of the uicontrol properties.
Report an issue | ||
<< Gridbag Layout Options Properties | Layouts | Menus >> |


text:
Here's how to download and install Windows 10
Microsoft has made it possible for anyone to download Windows 10 from its website. This makes it easy for people to install the operating system (OS), provided they have the appropriate license. Let's take a look at some of the ways you can download and install Windows 10 on your business computers.
Method 1: Download Windows 10 from Microsoft's website
The Media Creation tool makes it easy for you to download the Windows 10 ISO file for future use, or for saving to a DVD or USB flash drive as an installer. Head over to the Windows 10 download page and click Download tool now.
When your download is complete, double-click the file and click Yes if a User Account Control (UAC) prompt appears. The tool will show you two options: Upgrade this PC Now or Create installation media (USB flash drive, DVD, or ISO file) for another PC. Click on the second option and click Next.
Select the language, architecture, and your preferred Windows 10 edition. You can also choose Use this recommended option for this PC. Next, you will be presented with two media options: USB flash drive or ISO file. By choosing the former, you will be able to create a bootable USB drive. The latter, meanwhile, will download a file that you can use to install the OS later. The ISO file can also be burned to a DVD.
Method 2: Download Windows 10 from Microsoft's website on Mac, Linux, and Windows XP computers
The Media Creation tool only works for PCs running Windows 7, 8/8.1, and 10, but you can still download the Windows 10 ISO file on Microsoft's website. Pick your preferred Windows 10 edition and architecture, and an ISO file will begin downloading on your computer.
You can save the ISO file to a flash drive to install on a different computer. You can install Windows 10 on Mac, Linux, and Windows XP/Vista PCs, but you have to purchase a license key from Microsoft to activate the OS.
Method 3: Install the Windows 10 ISO directly on your Windows 7/8/8.1 PC
If you're running Windows 8 or newer, you can easily install the Windows 10 ISO by mounting it. Double click the ISO file, and Windows will read the file as though it was a DVD.
From here, you can double-click setup.exe to launch the Windows 10 setup. This will replace your current Windows version with Windows 10. All the necessary files from the ISO will be copied to your computer, which will eventually restart to complete the installation.
If you're using Windows 7, you will need to download ISO mounting software such as UltraISO and WinCDEmu. As soon as you have installed one, you can follow the aforementioned steps to upgrade to Windows 10.
No matter your business setup, there's a way for you to download and install Windows 10. Should you need help setting up Windows 10 for your organization, we'd be more than happy to assist you.


text:
Children who recently had a strep infection and then go on to suddenly develop symptoms of obsessive-compulsive disorder (OCD), Tourette's, tics, odd behaviors, emotional instability, and other psychiatric and neurological disorders are believed to have PANDAS.
PANDAS stands for Pediatric Autoimmune Neuropsychiatric Disorders Associated with Streptococcal Infections.
In some children, a strep infection appears to trigger an autoimmune attack against the brain, causing a sudden onset of neuropsychiatric symptoms.
PANS, or Pediatric Acute-Onset Neuropsychiatric Syndrome, is similar, except environmental factors or other infections trigger symptoms.
PANDAS/PANS isn't believed to be fully credible by many experts or doctors, in part because it must be diagnosed by symptoms and because the supporting research hasn't been very strong. Instead, they diagnose affected children with conditions such as OCD.
However, recent research sheds new light on the disorder and why it affects some children and not others.
PANDAS/PANS causes inflammation in an area of the brain called the basal ganglia, which helps govern emotions and motor control. When the immune system creates antibodies to the strep infection, these antibodies mistakenly attack tissue in the basal ganglia as well.
In 2018, researchers isolated cells in the basal ganglia, called cholinergic interneurons, which are affected by the immune attack. Previous research has shown these cells are depleted in Tourette's syndrome.
These cholinergic interneurons fire less when strep antibodies attach to them, which is believed to cause the symptoms associated with PANDAS/PANS.
Normally, antibodies would not be able to cross the blood-brain barrier to cause immune attacks in the brain. However, research shows the spike in inflammatory immune cells called TH-17 from a strep infection can cause the blood-brain barrier to open up. This is commonly called leaky blood-brain barrier and can allow strep antibodies and other pathogens to enter into the brain.
It has been found that most of these TH-17 cells pool in the olfactory bulb, an area of the brain that receives signals from the nasal passages.
This creates a path through which antibodies can enter, especially with repeat strep infections.
Genetic susceptibility has also been found to be a link in PANDAS/PANS.
PANDAS diagnosis criteria
- Significant obsessions, compulsions, tics
- Abrupt onset of these symptoms or relapsing and remitting symptom severity
- Onset prior to puberty
- Association with strep infection
- Association with neuropsychiatric symptoms, including PANS symptoms
PANS diagnosis criteria:
Abrupt, dramatic onset of OCD or severely limited food intake and the addition of at least two of the following:
- Anxiety
- Emotional swings and/or depression
- Irritability, anger, oppositional behavior
- Regression
- School performance deteriorates
- Sensory or motor abnormalities
- Sleep disturbances, urinary frequency, bed wetting
Functional medicine for PANDAS/PANS
Functional medicine strategies can help reduce inflammation and autoimmune attacks in PANDAS/PANS and support immune and brain health.
Functional medicine strategies may include removing inflammatory triggers from the diet and the environment; nutritional therapies to lower inflammation and support brain health; addressing blood sugar, gut health, and toxicity; supporting neurotransmitters; and repairing mitochondrial function and the blood-brain barrier.
Quick action can improve outcome. For more information, contact my office.


text:
Local artist David Macomber began work on an 8 x 20 foot mural at Morey's Piers today to benefit Hurricane Sandy relief efforts at the Jersey Shore.
After seeing the widespread devastation along the Jersey Shore, Macomber wanted to create something that would raise awareness as well as funds to benefit those affected.
"The ideas of UNITY and REBUILDING are important to me and are what I want to express in this piece," said Macomber. "In these trying times we need to come together to help the larger community. The shore is what drives our economy so it affects us all."
The mural will represent the unity of Jersey Shore communities in the wake of the storm that forever altered the New Jersey Coastline. Macomber will prepare the design and canvas before moving to a large outdoor space at Morey's Piers to engage in the project.
"Although Wildwood wasn't hit as hard as other places, Morey's Piers seemed like the most fitting and inspiring venue for this project," said Macomber. "I wanted to work with the ocean as a backdrop and the feeling of winter at the shore can be haunting. This painting is light of hope in the midst of a darker environment."
Macomber, who gave the shipping containers at Morey's Adventure Pier a new, extreme look in July, has been featured in Surfer, Eastern Surf and Surfing magazines. Macomber's passion for surfing and deep love of the Jersey Shore permeates his artistic style and inspired the charity mural. Once completed, the mural will be cut into about 30 segments that will be auctioned to raise money for New Jersey shore towns that were devastated by Hurricane Sandy. Proceeds will be donated to www.Wavesforwater.org.


text:
Trauma professionals worry about radiation exposure in our patients. A lot. There are a growing number of papers dealing with this topic in the journals every month. The risk of dying from cancer due to CT scanning is negligible compared to the risk from acute injuries in severely injured patients. However, it gets a bit fuzzier when you are looking at risk vs benefit in patients with less severe injuries. Is it possible to quantify this risk to help guide our use of CT scanning in trauma?
A nice paper from the Mayo clinic looked at their scan practices in 642 adult patients (age > 14) over a one year period. They developed dose estimates using a detailed algorithm, and combined them with data from the Biological Effects of Ionizing Radiation VII data. The risk level for injury was estimated using their trauma team activation criteria. High risk patients met their highest level activation criteria, and intermediate risk patients met their intermediate level activation criteria.
Key points in this article were:
- Average radiation dose was fairly consistent across all age groups (~25mSv)
- High ISS patients had a significantly higher dose
- Cumulative risk of cancer death from CT radiation averaged 0.1%
- This risk decreased with age. It was highest in young patients (< 20 yrs) at 0.2%, and decreased to 0.05% in the elderly (> 60 yrs)
Bottom line: Appropriate CT scan use in trauma evaluation is challenging. It's use is widespread, and although it changes management it has not decreased trauma mortality. This paper shows that the risk of death from trauma in the elderly outweighs the risk of death from CT scan radiation. However, this gap narrows in younger patients with less serious injuries because of their very low mortality rates. Therefore, we need to focus our efforts to reduce radiation exposure on our young patients with minor injuries.
Related posts:
- Radiation exposure in pediatric trauma
- Arms up and arms down impacts CT radiation exposure
- How much radiation does your trauma team get?
- Comparison of trauma mortality and estimated cancer mortality from computed tomography during initial evaluation of intermediate-risk trauma patients. J Trauma 70(6):1362-1365, 2011.
- Health risks from low levels of ionizing Radiation: BEIR VII, Phase 2. Washington DC: The National Academies Press, 2006.


text:
We're going to be running a series of interviews with the authors from our second issue. First up is Jessica Wilson, author of 'Death in Theatre'.
Tell us a little bit about yourself:
I'm a recent graduate of the University of Maryland's Elementary Education program. I've loved writing since the third grade, and I've been an aspiring novelist since middle school when my friends and I would exchange writing on the bus. I'm 23, recently engaged, and currently working on what I hope will be my first novel. I write largely fantasy; I've actually earned Honorable Mention in the Writers of the Future contest twice.
What attracts you to historical fiction?
"Death in Theatre" was actually a happy accident. I do not typically write historical fiction, and I only rarely read it. When I do read it, my favorite part is being immersed in the world as it was back then. It's one thing to think about how different life was in historic times, but quite another to view it through the eyes of someone (real or fictional) who lived it.
How did you get the idea for the story?
I wrote "Death in Theatre" for a challenge on my writing website. It was a genre challenge, and that round was Historic Fiction. At first I wanted to go with something closer to my usual comfort range, like something medieval, Roman, or feudal Japanese. But eventually I decided that focusing on an individual would be best, and that a traitor or assassin would be the most intriguing. When I thought of John Wilkes Booth, I was uncertain at first because it's not my usual fare, but I decided to challenge myself. What kind of man must Booth have been to assassinate President Lincoln?
Union or Confederacy?
Union. My family is actually from the south, but my dad was in the Army when I grew up and I lived all over. When I came back to the family home for my tenth grade year, seeing the Confederate pride down there disturbed me on a number of levels. The Confederacy wasn't all about slave-holding, of course, though that was one reason I was put off by all the Confederate pride. But the simple fact that the Confederacy wanted to split from the Union makes all that pride seem unpatriotic to me. Maybe they view it differently, but that's why I found (and still find) it hard to understand.
What are you currently working on?
A young adult fantasy novel. I actually have a lot of ideas floating around, but I'm trying to stick to this one. I have a long history of getting very far in a story and then abandoning it, taking a break for another idea. By the time I get back to the old story, I hate it and want to rewrite. My goal is to get all the way through this one this time, because what's the use in being a writer if you never finish anything?
Don't forget to read a free sample of Jessica's 'Death in Theatre' from the second issue of Alt Hist. We think you'll like it.


text:
NEW YORK (AP) — "I did the best I could," President Donald Trump said.
Huddled with aides in the West Wing last week, his eyes fixed on Fox News, Trump wasn't talking about how he had led the nation through the deadliest pandemic in a century. In a conversation overheard by an Associated Press reporter, Trump was describing how he'd just publicly rebuked one of his top scientists — Dr. Robert Redfield, a virologist and head of the U.S. Centers for Disease Control and Prevention.
Redfield had angered the president by asserting that a COVID-19 vaccine wouldn't be widely available until late 2021. So hours later, with no supporting evidence, Trump called a news conference to say Redfield was "confused." A vaccine, Trump insisted, could be ready before November's election.
Mission accomplished: Fox was headlining Trump's latest foray in his administration's ongoing war against its own scientists.
It is a war that continues unabated, even as the nation's COVID-19 death toll has reached 200,000 — nearly half the number of Americans killed in World War II, a once unfathomable number that the nation's top doctors just months ago said was avoidable.
Over the past six months, the Trump administration has prioritized politics over science at key moments, refusing to follow expert advice that might have contained the spread of the virus and COVID-19, the disease it causes. Trump and his people have routinely dismissed experts' assessments of the gravity of the pandemic, and of the measures needed to bring it under control. They have tried to muzzle scientists who dispute the administration's rosy spin.
While there is no indication that Trump's desperation for a vaccine has affected the science or safety of the process, his insistence that one would be ready before the election is stoking mistrust in the very breakthrough he hopes will help his reelection.
Today, he is pushing hard for a resumption of normal activity and trying to project strength and control to bolster his political position in his campaign against Democrat Joe Biden.
In hindsight, Trump says, there's nothing he would have done differently, citing his early move to restrict travel from China — a move that data and records show was ineffective. Still, he gives himself high marks on his handling the pandemic — except for bad messaging.
"On public relations I give myself a D," he told Fox this week. "On the job itself we take an A-plus."
In late January, after the virus had first emerged in Wuhan, China, the CDC launched its emergency operations center. What was needed, epidemiologists said, was an aggressive public education campaign and mobilization of contact tracing to identify and isolate the first cases before the disease spread out of control.
Instead, Trump publicly played down the virus in those crucial first weeks, even though he privately acknowledged the seriousness of the threat.
"I wanted to always play it down," the president told journalist Bob Woodward in March. "I still like playing it down because I don't want to create a panic."
But the virus kept coursing through the country, and the world. And with a president bent on minimizing the dangers, the U.S. would become ever more polarized, with the simple acts of wearing masks and keeping a distance transformed into political wedge issues.
"You have to be calm," Trump said on March 6, during a visit to the Atlanta headquarters of the CDC. "It'll go away."
By mid-March, hospitals in New York and elsewhere were deluged with patients and storing bodies in refrigerated morgue trucks.
And that was just the beginning.
The death chart was the awakening. On March 31, the nation was still grappling to understand the scope of the pandemic. Schools were disrupted, people sheltered at home and professional sports were paused. But the ascending lines of mortality on the chart said things were going to get way worse.
Dr. Deborah Birx, the White House coronavirus response coordinator, and Dr. Anthony Fauci, director of the National Institute of Allergy and Infectious Diseases, stood next to the president to explain the numbers. The doctors said that models of the escalating pandemic showed that, unless the country adopted masks, practiced distancing and kept businesses closed there would be 100,000 to 240,000 deaths. They stressed that if the U.S. adopted strict measures, the deaths could remain under 100,000.
"We would hope that we could keep it under that," Trump said then.
Still, instead of issuing a national mask mandate and other recommended measures, the Trump administration within weeks posted its "Opening Up America Again" plan.
The CDC began developing a thick document of guidelines to help local leaders make decisions about when reopening in their corner of the country was safe. But the White House thought the guidelines were too strict. They " would never see the light of day, " CDC scientists were told.
The Associated Press would eventually release the 63-page document, which offered science-based recommendations for workplaces, day care centers and restaurants.
Meanwhile, the president refused to wear a mask in public, planned political rallies where masks were not required, and downplayed the CDC's data tracking the disease's toll. And in May, communities reopened without the CDC's up-to-date guidance.
The predictable happened: Cases surged as soon as communities reopened. And by the end of May all hope for keeping the death toll under 100,000 vanished.
The president's argument was the toll from remaining closed would be too high — both economically and for people struggling with isolation at home and unable to send their children to school. Unspoken: the potential impact on his own reelection prospects.
Eager to find a quick fix that would justify a fast reopening timetable set by the White House, Trump himself championed the use of hydroxychloroquine, an anti-malarial drug, as a "game changer" to treat COVID-19. He persisted despite repeated warnings from the Food and Drug Administration and others that there was no proof that it was effective, and there was reason to believe it could be dangerous.
The administration also touted the use of convalescent plasma as a treatment, though Fauci and others thought the supporting data was weak.
Trump and his administration did not take scientific naysaying well.
Trump installed a lobbyist, Michael Caputo, to head communications for the U.S. Department of Health and Human Services, which oversees CDC and the FDA. Caputo had worked as a public relations consultant hired by the Russian energy giant Gazprom to improve President Vladimir Putin's image in the U.S., and had no public health background.
Caputo hosted a video on Facebook in which he likened government scientists to a "resistance" against Trump, and emails surfaced in which he castigated CDC officials, challenging their scientific pronouncements and trying to muzzle staffers. He would take a leave in September after his actions were revealed.
But the CDC's science-based recommendations continued to be routed through the White House
task force for vetting before release.
The administration's meddling and public rebukes has driven CDC morale to an all-time low, according to agency officials who spoke on the condition of anonymity because they were afraid of losing their jobs. The constant battling against the administration's political forces has made the difficult job of managing a pandemic even harder, and created a high rate of burnout.
Redfield has been criticized for not being a strong enough defender; those who long worked at the agency hope to see its leadership stand up for science in the face of politics.
"I'm sure this won't be easy, but it's essential to CDC's reputation," said Dr. Sonja Rasmussen, a 20-year CDC veteran who is now a medical professor at the University of Florida. "We need a strong and trusted CDC to get ourselves through this pandemic — as well as through the next public health emergency after this one."
Even as Fauci was restricted in his interactions with the media — his candor did not wear well with the administration — Trump elevated a new public face for his pandemic response task force: Dr. Scott Atlas, a Stanford University neurologist with no background in infectious disease.
White House officials said Atlas' role is to play devil's advocate, and to question data brought by doctors and public health experts — with an eye toward Trump's goal of a wider economic reopening in the weeks before the election, according to two White House officials who spoke on condition of anonymity to discuss internal operations.
In Atlas, Trump has a doctor who has downplayed the need for students to wear masks or social distance. Atlas has advocated for allowing the virus to run amok to create "herd immunity," the idea that community-wide resistance can be built by infecting a large portion of the population. The World Health Organization has discredited the approach as dangerous.
White House officials say Atlas no longer supports it.
As Fauci said in August, there is "a fundamental anti-science feeling" at a time when some people are pushing back at authority. "Science tends to fall into the category of authoritative. People don't like that."
Trump's tweets and other pronouncements have served to rally that opposition, down to the local level.
At least 60 state or local health leaders in 27 states have resigned, retired or been fired since April, according to a review by the AP and Kaiser Health News. Those numbers have doubled since June, when the AP and KHN first started tracking the departures.
Many quit after experiencing political pressure from public officials, or even violent threats from people angry about mask mandates and closures.
In Ohio, Dr. Joan Duwve was nominated by the governor for the job of state health director on Sept. 10. But just hours later, she withdrew her name from consideration. She said in a statement to The State newspaper that she did so to protect her family, after she learned that armed protesters had gone to the home of the woman who would have been her predecessor, Dr. Amy Acton, before she eventually resigned in June.
The White House has realized there is a downside to publicly undermining science. Officials recognize voter mistrust in the administration's pandemic response and concerns about political interference in speeding the vaccine production timetable is an emerging public health crisis of its own. They say they're worried there will be unnecessary deaths and economic impact if Americans are afraid of getting vaccinated, according to two White House officials who spoke on condition of anonymity to describe the administration's thinking.
The White House has ordered a campaign to bolster public confidence in the development process. It would include elevating the profiles of Trump targets like FDA Commissioner Dr. Stephen Hahn and the CDC's Redfield.
One person is not on board — Trump. Less than seven weeks from Election Day, he appears driven to say and do what he sees as necessary to secure a second term, whether backed by science and evidence or not. So he embraces rallies that break all the rules proposed by his own scientists, and taunts Biden for following them.
And despite the grim death toll, the president continues to frame the past six months as a success.
"When the terrible plague arrived from China, we mobilized American industry like never before. We rapidly developed life-saving therapies, reducing the fatality rate," Trump told a raucous Ohio crowd at a rally Monday. "We're going to deliver a vaccine before the end of the year. But it could be a lot sooner than that."
Associated Press writers Jonathan Lemire and Zeke Miller in Washington and Michelle R. Smith in Providence, Rhode Island, contributed to this report.


text:
Sadhana to Smooth Out Karma
Satguru Sivaya Subramuniyaswami , 1999-04-25
Today Gurudeva about how in the past parents were held responsible for their children's actions, how mothers stayed at home. When children do wrong, the karma comes back on the people who sold the games that incited them and the guns they used. Similarly, the karma of causing ill health by selling Western softdrinks in villages in India will come back on the sellers and manufacturers, in the same way it will come back on the cigarette makers now marketing in Asia. In movies too, if an actor sets an example by his roll, and the children follow it to commit violence, then everyone involved with the movie becomes reponsible. Gurudeva also comments on responsible investing.
Unedited Transcript:
Today at Kauai Aadheenam. It is April 25th. Greetings, everyone! We are really so happy to be talking with you.
There are no questions today but the subject did come up of responsibility for one's actions. You know, fifty years ago, this community held the parents responsible for what the children did. There wasn't any delinquency, the parents saw to that. The mother always stayed home and took care of her children and her husband. That is just what happened. Now, in today's world when children can kill other children in schools and the parents probably, are not even talked to by anyone, not held responsible for what their children do. Pretty sad situation. But, we cannot ignore the law of karma because the karma comes back on the parents on any game or contraption that influenced the children in what they did. The person who sold the gun is also an accomplice, maybe not according to law, but according to the law of karma. That is the chain reaction of karma. No one gets away with anything.
We were told that in every village in India, they are distributing Coca Cola and Pepsi Cola. There is a fear in the minds of those who know, that it is going to damage the health of the people in the villages. It will certainly damage their pocketbooks. Cigarette companies are going through Asia, distributing their wares. The karmic chain of all those who smoke and die, comes right back on the manufacturers and those who work in the factories. Maybe, not according to man's law but according to the law of karma, every action has a reaction. Not only on the individuals, but everyone concerned with it, manifesting the product that finally causes reaction.
Movie stars cause us to hurt others by what they act out. They have the excuse, of course, that they are just acting out the nature of the times like news-reporters. But, they are not news reporters, they are celebrities. People follow their example. Even a young kid can tell the difference between someone reporting the news without emotion and somebody who is acting out a murder, as if it were absolutely real. That person becomes a hero in the mind of the young person. If that person follows that example and kills or maims, the karma comes back on the actor, the writer, the producer, the investors, and on and on and on.
Why is it that stock brokers have investors if they want to have responsible investing? Many people won't put their money in anything that hurts the environment. Why? Maybe they do not know about the karmic chain. They feel responsible to their own community. They feel responsible to their nation. They feel responsible to the world community.
We could go on and on like this, about all the bad things that are happening. But, it is the responsibility of each person to be responsible to himself and his own conscience. That is why, performing regular sadhana at the same time everyday and going back through the day in reverse, making a sum total of what happened to see if it satisfies your conscience and that lays out the pattern for tomorrow. Everyone inside, knows the difference between right and wrong. It is the soul talking. The soul-driven people are people that make changes in the world.
Now we are going to hear the beautiful Tamil language, the sweet French language and the lovely Malay language. Just press another button if you know any of these languages and see how well they have translated all this.


text:
African/Black Lives Matter Collection 1 (7 Colors)
- Regular price
- $3.00
- Regular price
- Sale price
- $3.00
- Unit price
- per
African/Black Lives Matter Collection 1 (6 Colors)
Sheets are 14x12 inches
Our Printed Pattern HTV (Heat Transfer Vinyl) is printed on printed on Siser ColorPrintEasy™ which give our patterns a matte finish and is soft to the touch. Our design are printed without a mask therefore you cut with the design facing up and DO NOT MIRROR your design. We also recommend using a squeegee to apply the mask evenly and firmly. Be sure to add the Siser TTD Easy Mask transfer mask if you do not already have it for applying and transferring your design to your garment after weeding *Transfer Tape needed for adhesive.
- Cut your design. Do Not Mirror
- Weed Excess material
- Mask with Siser TTD Easy Mask
- Preheat garment for 2-3 seconds
- Apply design at 305°F/146°C
- Apply medium pressure for 10-15 seconds
- Peel Carrier hot
Do not dry clean; Machine wash cold / mild detergent; Dry at normal setting; No chlorine bleach; Wait 24 hours before first wash
- Certification: CPSIA Certified
- Specifications: PU composition; Polyester Backing; Matte finish; 70 Microns / 2.8 Mils; 45°/60° blade
- Applies To: PU composition; Polyester Backing; Matte finish; 70 Microns / 2.8 Mils; 45°/60° blade
Due to the nature of our products we do not do any returns all sales are final.
If an item you have purchased is out of stock after purchasing we will contact you for possible replacement options, allow you to backorder if possible or offer you a refund on that item if no other options are suitable..
If your shipped items are delivered to you damaged or you are missing items please contact us via email email@example.com and we will assist you as best as possible.


text:
Following a storm of protest over proposals by Transport for London to strip cycle lanes out of the northern junction of Blackfriars Bridge and to increase the road lanes from two to three for cars, TfL yesterday set out their new proposals for the bridge after they were sent back to the drawing board by cycling campaigners. TfL's original plans so incensed cyclists that some 600 wrote to complain.
Are the new designs any better? Decide for yourself...
Space for cycle lanes throughout the junction has been found, as if by magic, but this is to the detriment of space for pedestrians, not cars. Most importantly the southbound cycle lanes through the junction which were to be removed will now be retained - but this will still produce conditions where cyclists find themselves in a minimum width painted cycle lane alongside 3 lanes of fast moving traffic.
The current speed limit of 20mph will be raised to 30mph, despite the current limit not leading to any noticeable congestion, and despite a 2008 TfL report recommending a 20mph bridge limit to smooth traffic flow.
There will be a new toucan crossing which will allow cyclists coming up the ramp from the Embankment to cross and turn to go southbound across the bridge, which is great.
Squeezed in with fast moving traffic:
Share |


text:
PSD Corporate Business Card
The Corporate Business Card was created with Adobe Illustrator in EPS & AI formats.
There is also PSD version of the business card.
-If you want to change any Text , you just need to go -TEXT group- and you can change it easily.
*Layered PSD files
*Vectorel CDR and AI files
*Customizable and Editable
*CMYK Colors
*3.5" x 2" (3.75" x 2.25" with bleeds)
*Logo included
*Font Used: Opificio you can download here : https://www.dafont.com/opificio.font