〜2010年8月下旬〜
なんかリリースノートが見当たらないのでNEWSから抜粋した。
Version 3.82
A complete list of bugs fixed in this version is available here:
http://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=104&set=custom
- Compiling GNU make now requires a conforming ISO C 1989 compiler and
standard runtime library.
- WARNING: Backward-incompatibility!
The POSIX standard for make was changed in the 2008 version in a
fundamentally incompatible way: make is required to invoke the shell as if
the '-e' flag were provided. Because this would break many makefiles that
have been written to conform to the original text of the standard, the
default behavior of GNU make remains to invoke the shell with simply '-c'.
However, any makefile specifying the .POSIX special target will follow the
new POSIX standard and pass '-e' to the shell. See also .SHELLFLAGS
below.
- WARNING: Backward-incompatibility!
The '$?' variable now contains all prerequisites that caused the target to
be considered out of date, even if they do not exist (previously only
existing targets were provided in $?).
- WARNING: Backward-incompatibility!
Wildcards were not documented as returning sorted values, but the results
have been sorted up until this release.. If your makefiles require sorted
results from wildcard expansions, use the $(sort ...) function to request
it explicitly.
- WARNING: Backward-incompatibility!
In previous versions of make it was acceptable to list one or more explicit
targets followed by one or more pattern targets in the same rule and it
worked "as expected". However, this was not documented as acceptable and if
you listed any explicit targets AFTER the pattern targets, the entire rule
would be mis-parsed. This release removes this ability completely: make
will generate an error message if you mix explicit and pattern targets in
the same rule.
- WARNING: Backward-incompatibility!
As a result of parser enhancements, three backward-compatibility issues
exist: first, a prerequisite containing an "=" cannot be escaped with a
backslash any longer. You must create a variable containing an "=" and
use that variable in the prerequisite. Second, variable names can no
longer contain whitespace, unless you put the whitespace in a variable and
use the variable. Third, in previous versions of make it was sometimes
not flagged as an error for explicit and pattern targets to appear in the
same rule. Now this is always reported as an error.
- WARNING: Backward-incompatibility!
The pattern-specific variables and pattern rules are now applied in the
shortest stem first order instead of the definition order (variables
and rules with the same stem length are still applied in the definition
order). This produces the usually-desired behavior where more specific
patterns are preferred. To detect this feature search for 'shortest-stem'
in the .FEATURES special variable.
- WARNING: Backward-incompatibility!
The library search behavior has changed to be compatible with the standard
linker behavior. Prior to this version for prerequisites specified using
the -lfoo syntax make first searched for libfoo.so in the current
directory, vpath directories, and system directories. If that didn't yield
a match, make then searched for libfoo.a in these directories. Starting
with this version make searches first for libfoo.so and then for libfoo.a
in each of these directories in order.
- New command line option: --eval=STRING causes STRING to be evaluated as
makefile syntax (akin to using the $(eval ...) function). The evaluation
is performed after all default rules and variables are defined, but before
any makefiles are read.
- New special variable: .RECIPEPREFIX allows you to reset the recipe
introduction character from the default (TAB) to something else. The
first character of this variable value is the new recipe introduction
character. If the variable is set to the empty string, TAB is used again.
It can be set and reset at will; recipes will use the value active when
they were first parsed. To detect this feature check the value of
$(.RECIPEPREFIX).
- New special variable: .SHELLFLAGS allows you to change the options passed
to the shell when it invokes recipes. By default the value will be "-c"
(or "-ec" if .POSIX is set).
- New special target: .ONESHELL instructs make to invoke a single instance
of the shell and provide it with the entire recipe, regardless of how many
lines it contains. As a special feature to allow more straightforward
conversion of makefiles to use .ONESHELL, any recipe line control
characters ('@', '+', or '-') will be removed from the second and
subsequent recipe lines. This happens _only_ if the SHELL value is deemed
to be a standard POSIX-style shell. If not, then no interior line control
characters are removed (as they may be part of the scripting language used
with the alternate SHELL).
- New variable modifier 'private': prefixing a variable assignment with the
modifier 'private' suppresses inheritance of that variable by
prerequisites. This is most useful for target- and pattern-specific
variables.
- New make directive: 'undefine' allows you to undefine a variable so that
it appears as if it was never set. Both $(flavor) and $(origin) functions
will return 'undefined' for such a variable. To detect this feature search
for 'undefine' in the .FEATURES special variable.
- The parser for variable assignments has been enhanced to allow multiple
modifiers ('export', 'override', 'private') on the same line as variables,
including define/endef variables, and in any order. Also, it is possible
to create variables and targets named as these modifiers.
- The 'define' make directive now allows a variable assignment operator
after the variable name, to allow for simple, conditional, or appending
multi-line variable assignment.
これを見れば一目瞭然なのである。
% git log --pretty=format:"%an" version.h | sort | uniq -c | sort -nr | head 853 eban 610 svn 598 nobu 363 matz 177 usa 68 ko1 34 naruse 28 knu 21 akr 16 ocean
svnに抜かれるのは来年か。
この無欲マッチの話は結局バックトラックを抑制すればいいので、
/_(\{.+?\})\\mrm\{([CHP])\}_(\{.+?\})
を
/_(?>\{.+?\})\\mrm\{([CHP])\}_(\{.+?\})
とすればいける。
正規表現 - Rubyリファレンスマニュアルによると(?>)は超欲張りマッチということなので、
合わせ技で「超欲張り無欲マッチ」となる。
何を言ってるのかよくわからんが。
マニュアルによればなくなるかもしれないので使用禁止なのが痛い。
ちょっと悩んだ。シェルスクリプトでなんとなくcdではなくchdirと書いたら
bash: chdir: command not found
と言われてしまった。そんな馬鹿なことあるかいと、コマンドラインで試してみると本当にない。
cdだけなのか。意外だ。
最近よく見るがなんだかよくわからない「ェ」を調べてみたらニコニコ大百科に書いてあった。
近年では上記の台詞から語尾の「ェ・・・」の部分が独立し、ある対象に対する愛しさ・憤怒・哀れみ・失望 等々の様々な感情が昂った時に、それらを一心にこめて「◯◯ェ・・・」と呟くのが一部で流行っているとかいないとか。くっつける対象の単語の語尾がエ段である必要は全くないため(例:ナルトェ・・・)どんな物を対象にしても気軽に使えるのが強みである。
意外にも前日でも宿の予約ができた。通うのはちょっとつらいよね。
ショッカー人形も用意したし準備はいいかな。
ネットワーク環境が2年前に比べて悪化してしまった。参加人数の差だろうか。
家のPCにsshでログインできない。使えるポートは限られているらしい。
こういうときはVPSとか使えると便利だな。
1日目はほとんど、開発者会議で使われた部屋にいた。
その後GCとclassboxの話。
LazySweepのデモは面白かったが、効果がわかりにくい。
binding(1)は欲しいな。
それにしてもホテルにモデムが置いてあるのには驚いた。
有線でつないでくれときたもんだ。
去年も書いた気がするが「ドラを鳴らすまでがLT」。
時間内に終わらせちゃだめ。
今日も濃い内容で面白かったなあ。
裏番組にもいいのがあって困る。
明日の午後も困る。
今日も朝から濃い話を聞く。午後は須藤さんの話を聞いて野良ビルダーでまったりと。
途中休憩時間に折り紙を折ったり。
基調講演は英語だったので半分以上寝てた。
closingはラ王的なお約束なのかどうか不明だが、みなさんお疲れさま。
PS. 帰りに夏祭り客に飲み込まれてひどい目にあった。
早くもcygwinにrakudo starが。
記念にインストール。
% gem-trunk install rails Successfully installed activesupport-3.0.0 Successfully installed builder-2.1.2 Successfully installed i18n-0.4.1 Successfully installed activemodel-3.0.0 Successfully installed rack-1.2.1 Successfully installed rack-test-0.5.4 Successfully installed rack-mount-0.6.12 Successfully installed tzinfo-0.3.23 Successfully installed abstract-1.0.0 Successfully installed erubis-2.6.6 Successfully installed actionpack-3.0.0 Successfully installed arel-1.0.1 Successfully installed activerecord-3.0.0 Successfully installed activeresource-3.0.0 Successfully installed mime-types-1.16 Successfully installed polyglot-0.3.1 Successfully installed treetop-1.4.8 Successfully installed mail-2.2.5 Successfully installed actionmailer-3.0.0 Successfully installed thor-0.14.0 Successfully installed railties-3.0.0 Successfully installed bundler-1.0.0 Successfully installed rails-3.0.0 23 gems installed <後略>
いっぱい入ったな。
いや10日どころかこの先1週間猛暑日という
予報になってる。
なんだよ、土曜日の38度て。
とはいうものの最低気温はここ2,3日25度を下回っているわけで、
確実に涼しくなってきてはいる。
ベータ版から継続での申し込みは昨日までだったようで。
そういうわけでもう壊れてもいいのでUbuntu 10.04をインストールしてみたら15分ぐらいで終了。
びっくり。続いてOS再インストールをぽちっとしたら2,3分でCentOSに戻った。
これはいい!新規に申し込もう。