=encoding utf8 =head1 NAME =begin original perldelta - what is new for perl v5.38.0 =end original perl5380delta - perl v5.38.0 での変更点 =head1 DESCRIPTION =begin original This document describes differences between the 5.36.0 release and the 5.38.0 release. =end original この文書は 5.36.0 リリースと 5.38.0 リリースの変更点を記述しています。 =head1 Core Enhancements (コアの拡張) =head2 New C Feature (新しい C 機能) =begin original A new B syntax is now available for defining object classes, where per-instance data is stored in "field" variables that behave like lexicals. =end original オブジェクトクラスを定義するための新しい B<実験的> 文法が利用可能に なりました; これは、実体ごとのデータは、レキシカルのように振る舞う "field" 変数に保管されます。 use feature 'class'; class Point { field $x; field $y; method zero { $x = $y = 0; } } =begin original This is described in more detail in L. Notes on the internals of its implementation and other related details can be found in L. =end original これは L に、より詳細が記述されています。 その実装の内部の注意とその他の関連する詳細については、 L にあります。 =begin original This remains a new and experimental feature, and is very much still under development. It will be the subject of much further addition, refinement and alteration in future releases. As it is experimental, it yields warnings in the C category. These can be silenced by a C statement. =end original これは新しく実験的な機能であり続け、非常に開発中です。 将来のリリースでさらに多くの追加、改良、変更が予定されています。 これは実験的なので、C カテゴリの警告が出ます。 これは C 文で黙らせることができます。 use feature 'class'; no warnings 'experimental::class'; =head2 Unicode 15.0 is supported (Unicode 15.0 に対応しました) =begin original See L for details. =end original 詳しくは L を 参照してください。 =head2 Deprecation warnings now have specific subcategories (廃止予定警告はそれぞれ副カテゴリを持つようになりました) =begin original All deprecation warnings now have their own specific deprecation category which can be disabled individually. You can see a list of all deprecated features in L, and in L. The following list is from L: =end original 全ての廃止予定警告は、個別に無効化できるように、それぞれ固有の 廃止予定カテゴリを持つようになりました。 全ての廃止予定機能の一覧は L と L にあります。 次の一覧は L からのものです: +- deprecated ----+ | | | +- deprecated::apostrophe_as_package_separator | | | +- deprecated::delimiter_will_be_paired | | | +- deprecated::dot_in_inc | | | +- deprecated::goto_construct | | | +- deprecated::smartmatch | | | +- deprecated::unicode_property_name | | | +- deprecated::version_downgrade =begin original It is still possible to disable all deprecation warnings in a single statement with =end original 未だに、次の一行で全ての廃止予定警告を無効にできます: no warnings 'deprecated'; =begin original but now is possible to have a finer grained control. As has historically been the case these warnings are automatically enabled with =end original しかし、より細かい制御ができるようになりました。 これまでと同様、次のようにするとこれらの警告は自動的に有効になります: use warnings; =head2 %{^HOOK} API introduced (%{^HOOK} API が導入されました) =begin original For various reasons it can be difficult to create subroutine wrappers for some of perls keywords. Any keyword which has an undefined prototype simply cannot be wrapped with a subroutine, and some keywords which perl permits to be wrapped are in practice very tricky to wrap. For example C is tricky to wrap, it is possible but doing so changes the stack depth, and the standard methods of exporting assume that they will be exporting to a package at certain stack depth up the stack, and the wrapper will thus change where functions are exported to unless implemented with a great deal of care. This can be very awkward to deal with. =end original 様々な理由により、いくつかの perl のキーワードのラッパサブルーチンを 作るのは難しいことがありました。 プロトタイプが未定義のキーワードは単にサブルーチンで ラッピングすることができず、perl がラッピングされることを許している いくつかのキーワードは実際にはラッピングするのが非常にトリッキーです。 例えば C はラッピングするのがトリッキーで、 可能ではありますが、そうするとスタックの深さが変わり、 エクスポートの標準手法は、パッケージをスタック上のあるスタックの深さに エクスポートすることを仮定しているので、ラッパは、非常に 注意して実装されない限り、関数がエクスポートされる場所を 変更します。 これは非常に扱いにくいです。 =begin original Accordingly we have introduced a new hash called C<%{^HOOK}> which is intended to facilitate such cases. When a keyword supports any kind of special hook then the hook will live in this new hash. Hooks in this hash will be named after the function they are called by, followed by two underbars and then the phase they are executed in, currently either before or after the keyword is executed. =end original 従って、私たちはこのような状況を手助けすることを意図した、 C<%{^HOOK}> と呼ばれる新しいハッシュを導入しました。 あるキーワードが特殊フックに対応すると、 フックはこの新しいハッシュの中で有効になります。 このハッシュのフックは、これらが呼ぶ関数の名前、 二つの下線、それが実行されるフェーズ(現在は "before" か "after") からなる名前がつきます。 =begin original In this initial release we support two hooks C and C. These are provided to make it easier to perform tasks before and after a require statement. =end original この初期リリースでは、二つのフック C と C に対応しています。 これらは、require 文の前後で処理を実行するのを容易にします。 =begin original See L for more details. =end original さらなる詳細については L を参照してください。 =head2 PERL_RAND_SEED =begin original Added a new environment variable C which can be used to cause a perl program which uses C without using C explicitly or which uses C with no arguments to be repeatable. See L. This feature can be disabled at compile time by passing =end original C を使わずに C を使ったり、引数なしの C を 使う perl プログラムを再現可能にするために使われる、 新しい環境変数 C が追加されました。 L を参照してください。 この機能はコンパイル時に無効にできます; 次のものを: -Accflags=-DNO_PERL_RAND_SEED =begin original to F during the build process. =end original ビルド中に F に渡します。 =head2 Defined-or and logical-or assignment default expressions in signatures (シグネチャのデフォルト式の定義性論理和と論理和) =begin original The default expression for a subroutine signature parameter can now be assigned using the C or C<||=> operators, to apply the defaults whenever the caller provided an undefined or false value (respectively), rather than simply when the parameter is missing entirely. For more detail see the documentation in L. =end original サブルーチンシグネチャ引数のデフォルト式は、 単に引数が完全に省略されるのではなく、 呼び出し元が未定義値は偽の値を指定したときのデフォルトを適用するために、 (それぞれ) C や C<||=> の演算子を使って代入できるようになりました。 さらなる詳細については L の文書を参照してください。 =head2 @INC Hook Enhancements and $INC and INCDIR (@INC フック拡張と $INC と INCDIR) =begin original The internals for C<@INC> hooks have been hardened to handle various edge cases and should no longer segfault or throw assert failures when hooks modify C<@INC> during a require operation. As part of this we now ensure that any given hook is executed at most once during a require call, and that any duplicate directories do not trigger additional directory probes. =end original C<@INC> フックの内部は、さまざまなエッジケースを扱うために強化され、 また、フックが require 操作の間に C<@INC> を修正しても セグメンテーションフォルトや例外を発生させなくなりました。 この一部として、全ての指定されたフックは require 呼び出しの間に 最大 1 回しか実行されなくなり、重複したディレクトリが 追加のディレクトリ検査を引き起こさなくなりました。 =begin original To provide developers more control over dynamic module lookup, a new hook method C is now supported. An object supporting this method may be injected into the C<@INC> array, and when it is encountered in the module search process it will be executed, just like how INC hooks are executed, and its return value used as a list of directories to search for the module. Returning an empty list acts as a no-op. Note that since any references returned by this hook will be stringified and used as strings, you may not return a hook to be executed later via this API. =end original 開発者が動的なモジュール検索をさらに制御できるように、 新しいフックメソッド C に対応しました。 このメソッドに対応しているオブジェクトは C<@INC> 配列に注入でき、 モジュール検索プロセスに遭遇したとき、INC フックが実行されるのと 同様に実行されます。 その返り値はモジュールを検索するためのディレクトリのリストとして使われます。 空リストを返すと、何もしません。 このフックによって返されるリファレンスは文字列化されて文字列として 使われるので、この API 経由で後で実行されるフックを 返してはいけないことに注意してください。 =begin original When an C<@INC> hook (either C or C) is called during require, the C<$INC> variable will be localized to be the value of the index of C<@INC> that the hook came from. If the hook wishes to override what the "next" index in C<@INC> should be it may update C<$INC> to be one less than the desired index (C is equivalent to C<-1>). This allows an C<@INC> hook to completely rewrite the C<@INC> array and have perl restart its directory probes from the beginning of C<@INC>. =end original require の間に C<@INC> フック (C か C のどちらか) が 呼び出されると、C<$INC> 変数は、 フックが来た C<@INC> の添え字の値にローカル化されます。 フックが C<@INC> の「次の」添え字に来るものを上書きしたい場合、 C<$INC> を目的の添え字から 1 を引いたものに更新できます (C は C<-1> と等価です)。 これにより C<@INC> フックは、完全に C<@INC> 配列を書き換えて、 perl に C<@INC> の先頭からディレクトリ検索を再出発させるように することができます。 =begin original Blessed CODE references in C<@INC> that do not support the C or C methods will no longer trigger an exception, and instead will be treated the same as unblessed coderefs are, and executed as though they were an C hook. =end original C や C メソッドに対応していない C<@INC> の中の bless された CODE は、もはや例外を引き起こさず、 bless されていないコードリファレンスと同じように扱いますが、 C フックとして実行されます。 =head2 Forbidden control flow out of C or C now detected at compile-time (C や C から離れる禁止された制御フローはコンパイル時に検出されるようになりました) =begin original It is forbidden to attempt to leave a C or C block by means of control flow such as C or C. Previous versions of perl could only detect this when actually attempted at runtime. =end original C or C のような制御フローで C や C ブロックから離れようとすることは許されていません。 以前のバージョンの perl では、実際に実行時に試みた時点でのみ これを検出できました。 =begin original This version of perl adds compile-time detection for many cases that can be statically determined. This may mean that code which compiled successfully on a previous version of perl is now reported as a compile-time error with this one. This only happens in cases where it would have been an error to actually execute the code anyway; the error simply happens at an earlier time. =end original このバージョンの perl では、静的に決定できる多くの場合での コンパイル時検出が追加されました。 これは、以前のバージョンの perl でコンパイルに成功していたコードが、 このバージョンではコンパイル時エラーとして 報告されるかもしれないということです。 これは、どちらにしろ実際にコードを実行したときにエラーになる場合にのみ 起こります; エラーは単に早く起きるだけです。 =head2 Optimistic Eval in Patterns (パターン中の楽観的評価) =begin original The use of C<(?{ ... })> and C<(??{ ... })> in a pattern disables various optimisations globally in that pattern. This may or may not be desired by the programmer. This release adds the C<(*{ ... })> equivalent. The only difference is that it does not and will never disable any optimisations in the regex engine. This may make it more unstable in the sense that it may be called more or less times in the future, however the number of times it executes will truly match how the regex engine functions. For example, certain types of optimisation are disabled when C<(?{ ... })> is included in a pattern, so that patterns which are O(N) in normal use become O(N*N) with a C<(?{ ... })> pattern in them. Switching to C<(*{ ... })> means the pattern will stay O(N). =end original パターン中の C<(?{ ... })> と C<(??{ ... })> を使うと、 このパターン全体での様々な最適化を無効にします。 これはプログラマが望んたことかもしれませんし違うかもしれません。 このリリースでは等価な C<(*{ ... })> が追加されました。 唯一の違いは、正規表現エンジンの最適化が決して無効化されないことです。 将来呼び出される回数が増えたり減ったりするかもしれないという意味では より不安定になるかもしれませんが、 実行される回数は正規表現エンジンが動作する回数と正確に一致します。 例えば、ある種の最適化は、C<(?{ ... })> がパターンに含まれているときに 無効化されるので、通常の使用では O(N) のパターンが、 C<(?{ ... })> パターンを含むと O(N*N) になります。 C<(*{ ... })> に切り替えると、パターンは O(N) のままになります。 =head2 REG_INF has been raised from 65,536 to 2,147,483,647 (REG_INF は 65,536 から 2,147,483,647 に増やされました) =begin original Many regex quantifiers used to be limited to C in the past, but are now limited to C, thus it is now possible to write C for example. Note that doing so may cause the regex engine to run longer and use more memory. =end original 以前は、多くの正規表現量指定子は C に制限されていましたが、 制限は C になりました; 従って、例えば C と書けるようになりました。 こうすると正規表現エンジンの実行時間が長くなり、消費メモリが 増えることに注意してください。 =head2 New API functions optimize_optree and finalize_optree (新しい API 関数 optimize_optree と finalize_optree) =begin original There are two new API functions for operating on optree fragments, ensuring you can invoke the required parts of the optree-generation process that might otherwise not get invoked (e.g. when creating a custom LOGOP). To get access to these functions, you first need to set a C<#define> to opt-in to using these functions. =end original (カスタム LOGOP を作成するときなど) 通常起動されないかもしれない、 op 木生成処理の必要な部分を確実に起動する、 op 木要素を操作するための二つの新しい API 関数があります。 これらの関数にアクセスするためには、まずこれらの関数を使うことを オプトインするための C<#define> を設定する必要があります。 #define PERL_USE_VOLATILE_API =begin original These functions are closely tied to the internals of how the interpreter works, and could be altered or removed at any time if other internal changes make that necessary. =end original これらの関数は、インタプリタがどのように動作するかの内部に 強く結びついていて、必要に応じて内部が変更されたときにいつでも 変更または削除される可能性があります。 =head2 Some Cs are now permitted in C and C blocks (C と C ブロックの中の一部の C が許されるようになりました) =begin original Perl version 5.36.0 added C blocks and permitted the C keyword to also add similar behaviour to C/C syntax. These did not permit any C expression within the body, as it could have caused control flow to jump out of the block. Now, some C expressions are allowed, if they have a constant target label, and that label is found within the block. =end original Perl バージョン 5.36.0 は C ブロックが追加され、 また C/C 構文と似たような振る舞いをする C キーワードも追加されました。 これらはブロック内でのあらゆる C 式が許されていませんでした; ブロックから飛び出す制御フローになるかもしれないからです。 今回、固定のターゲットラベルを持ち、そのラベルがブロックの中にあるなら、 一部の C 式は許されるようになりました。 use feature 'defer'; defer { goto LABEL; print "This does not execute\n"; LABEL: print "This does\n"; } =head2 New regexp variable ${^LAST_SUCCESSFUL_PATTERN} (新しい正規表現変数 ${^LAST_SUCCESSFUL_PATTERN}) =begin original This allows access to the last succesful pattern that matched in the current scope. Many aspects of the regex engine refer to the "last successful pattern". The empty pattern reuses it, and all of the magic regex vars relate to it. This allows access to its pattern. The following code =end original これは、現在のスコープで最後にマッチングに成功したパターンに アクセスできるようにします。 正規表現の多くの要素は「最後に成功したパターン」を参照します。 空パターンはこれを再利用し、全てのマジカル正規表現変数は これに関わります。 これはこのパターンにアクセスできるようにします。 以下のコードは: if (m/foo/ || m/bar/) { s//PQR/; } =begin original can be rewritten as follows =end original 次のように書き直せます: if (m/foo/ || m/bar/) { s/${^LAST_SUCCESSFUL_PATTERN}/PQR/; } =begin original and it will do the exactly same thing. =end original そしてこれは正確に同じ事です。 =head2 Locale category LC_NAME now supported on participating platforms (ロケールカテゴリ LC_NAME は、参加しているプラットフォームで対応するようになりました) =begin original On platforms that have the GNU extension C category, you may now use it as the category parameter to L to set and query its locale. =end original GNU 拡張の C カテゴリがあるプラットフォームでは、 このロケールを設定あるいは問い合わせするための L のカテゴリ引数として、これを使えるようになりました。 =head1 Incompatible Changes (互換性のない変更) =head2 readline() no longer clears the stream error and eof flags (readline() はもはやストリームエラーと eof フラグをクリアしなくなりました) =begin original C, also spelled C<< <> >>, would clear the handle's error and eof flags after an error occurred on the stream. =end original C (C<< <> >> とも書けます) は、ストリームに対してエラーが 発生した後、ハンドルのエラーと eof フラグをクリアしていました。 =begin original In nearly all cases this clear is no longer done, so the error and eof flags now properly reflect the status of the stream after readline(). =end original ほぼ全ての場合で、このクリアはもはや行われないので、 エラーと eof フラグは readline() の後のストリームの状態を 適切に反映するようになりました。 =begin original Since the error flag is no longer cleared calling close() on the stream may fail and if the stream was not explicitly closed, the implicit close of the stream may produce a warning. =end original エラーフラグは、失敗するかも知れない、明示的に閉じられていない ストリームに対する close() の呼び出しでもはや クリアされないので、ストリームを暗黙に閉じると 警告が出るかもしれません。 =begin original This has resulted in two main types of problems in downstream CPAN modules, and these may also occur in your code: =end original これは下流の CPAN モジュールに 2 種類の問題を引き起こし、 これらはあなたのコードにも起きるかもしれません: =over =item * =begin original If your code reads to end of file, and then rebinds the handle to a new file descriptor, previously since the eof flag wasn't set you could continue to read from the stream. You now need to clear the eof flag yourself with C<< $handle->clearerr() >> to continue reading. =end original コードがファイル終端を読み込み、それからハンドルを 新しいファイル記述子に再設定した場合、以前は eof フラグは 設定されていないのでストリームから読み込み続けることができました。 読み込み続けるためには C<< $handle->clearerr() >> によって 自分で eof フラグをクリアする必要があるようになりました。 =item * =begin original If your code encounters an error on the stream while reading with readline() you will need to call C<< $handle->clearerr >> to continue reading. The one case this occurred the underlying file descriptor was marked non-blocking, so the read() system call was failing with C, which resulted in the error flag being set on the stream. =end original readline() での読み込み中にストリームにエラーが発生した場合、 読み込み続けるために C<< $handle->clearerr >> を呼び出す必要があります。 これが起きる場合の一つは、基になっているファイル記述子が 非ブロッキングとしてマークされていることで、 それにより read() システムコールが C で失敗し、ストリームで エラーフラグが設定されます。 =back =begin original The only case where error and eof flags continue to cleared on error is when reading from the child process for glob() in F. This allows it to correctly report errors from the child process on close(). This is unlikely to be an issue during normal perl development. =end original エラー時にエラーと eof フラグがクリアされる唯一の場合は、 F の glob() のための子プロセスから読み込む場合です。 これにより、close() 時の子プロセスからのエラーを正しく報告できます。 これが通常の perl 開発の間に問題になることは考えにくいです。 [L] =head2 C blocks no longer run after an C in C (C ブロックはもはや C 内の C の後で実行されなくなりました) =begin original C blocks will no longer run after an C performed inside of a C. This means that the combination of the C<-v> option and the C<-c> option no longer executes a compile check as well as showing the perl version. The C<-v> option executes an exit(0) after printing the version information inside of a C block, and the C<-c> check is implemented by using C hooks, resulting in the C<-v> option taking precedence. =end original C ブロックはもはや、 C の内側の C の処理後に実行されなくなりました。 つまり、C<-v> オプションと C<-c> オプションの組み合わせで、もはや perl バージョンの表示しながらコンパイルチェックを実行しなくなりました。 C<-v> オプションは C ブロックの中でバージョンを表示した後 exit(0) を実行し、C<-c> のチェックは C フックを使って 実装されているので、C<-v> オプションが優先されます。 [L] [L] =head2 Syntax errors no longer produce "phantom error messages" (文法エラーはもはや「幽霊エラーメッセージ」を生成しなくなりました) =begin original Generally perl will continue parsing the source code even after encountering a compile error. In many cases this is helpful, for instance with misspelled variable names it is helpful to show as many examples of the error as possible. But in the case of syntax errors continuing often produces bizarre error messages and may even cause segmentation faults during the compile process. In this release the compiler will halt at the first syntax error encountered. This means that any code expecting to see the specific error messages we used to produce will be broken. The error that is emitted will be one of the diagnostics that used to be produced, but in some cases some messages that used to be produced will no longer be displayed. =end original 一般的には、perl はコンパイルエラーに遭遇した後もソースコードのパースを 続けます。 多くの場合、例えば変数名のスペルミスのような場合は、 できるだけ多くのエラーを表示するのは助けになります。 しかし、文法エラーの場合、続けるとおかしなエラーメッセージが出たり、 コンパイル中にセグメンテーションフォルトを引き起こすことすらあります。 このリリースでは、コンパイラは最初に文法エラーに遭遇した時点で停止します。 これは、特定のエラーメッセージが出力されることを想定したコードは 壊れるということです。 出力されるエラーは、今まで出力されていた診断メッセージの一つです。 場合によっては、今まで出力されていた一部のメッセージは もはや表示されません。 =begin original See L for more details. =end original さらなる詳細については L を 参照してください。 =head2 L|utf8/Utility functions> =begin original Starting in this release, if the input string is C, it remains C. Previously it would be changed into a defined, zero-length string. =end original このリリースから、入力文字列が C の場合、 C のままになりました。 以前は、定義された、長さ 0 の文字列に変更していました。 =head2 Changes to "thread-safe" locales (「スレッドセーフ」ロケールの変更) =begin original Perl 5.28 introduced "thread-safe" locales on systems that supported them, namely modern Windows, and systems supporting POSIX 2008 locale operations. These systems accomplish this by having per-thread locales, while continuing to support the older global locale operations for code that doesn't take the steps necessary to use the newer per-thread ones. =end original Perl 5.28 は、特に最近の Windows と、POSIX 2008 ロケール操作に 対応しているシステムのような、対応しているシステムで 「スレッドセーフ」ロケールを導入しました。 これらのシステムは、スレッド単位のロケールを持つことでこれを 達成している一方、新しいスレッド単位のロケールを 使うのに必要な手順を取っていないコードのために 古いグローバルならロケール操作も対応し続けています。 =begin original It turns out that some POSIX 2008 platforms have or have had buggy implementations, which forced perl to not use them. The C<${^SAFE_LOCALES}> scalar variable contains 0 or 1 to indicate whether or not the current platform is considered by perl to have a working thread-safe implementation. Some implementations have been fixed already, but FreeBSD and Cygwin have been newly discovered to be sufficiently buggy that the thread-safe operations are no longer used by perl, starting in this release. Hence, C<${^SAFE_LOCALES}> is now 0 for them. Older versions of perl can be configured to avoid these buggy implementations by adding the F option C<-DNO_POSIX_2008_LOCALE>. =end original 一部の POSIX 2008 プラットフォームは実装にバグがあります、あるいは ありました; これにより perl はこれを使わないように強制しています。 C<${^SAFE_LOCALES}> スカラ変数は、現在のプラットフォームが動作する スレッドセーフ実装を持っていると perl が考えているかどうかを示す 0 または 1 を取ります。 一部の実装はすでに修正されていますが、 FreeBSD と Cygwin は、このリリースから perl がもはや使っていない スレッドセーフ操作に新たにバグが発見されました。 従って、それらについては C<${^SAFE_LOCALES}> は 0 になりました。 古いバージョンの perl は、 F オプション C<-DNO_POSIX_2008_LOCALE> を追加することで これらのバグのある実装を避けるように設定できます。 =begin original And v5.38 fixes a bug in all previous perls that led to locales not being fully thread-safe. The first thread that finishes caused the main thread (named C) to revert to the global locale in effect at startup, discarding whatever the thread's locale had been previously set to. If any other thread had switched to the global locale by calling C in XS code, those threads would all share the global locale, and C would not be thread-safe. =end original そして、v5.38 では、以前の全ての perl が持っていた、 ロケールが完全にスレッドセーフではなくなるバグを修正しました。 終了した最初のスレッドは、 (C という名前の)メインスレッドを 以前に設定したスレッドのロケールを捨てて、 起動時に有効だったグローバルなロケールに巻き戻します。 その他のスレッドが XS コードの中で C を 呼び出すことでグローバルなロケールに切り替えると、 これらのスレッドは全てグローバルロケールを共有し、 C はスレッドセーフではありません。 =head1 Deprecations (廃止予定) =head2 Use of C<'> as a package name separator is deprecated (パッケージ名区切りとしての C<'> の使用は廃止予定になりました) =begin original Using C<'> as package separator in a variable named in a double-quoted string has warned since 5.28. It is now deprecated in both string interpolation and non-interpolated contexts, and will be removed in Perl 5.42. =end original ダブルクォート文字列の中で変数名のパッケージ区切り文字に C<'> を使うことは、5.28 から警告が出ていました。 これは、文字列変数展開と非変数展開コンテキストの両方で廃止予定になり、 Perl 5.42 に削除される予定です。 =head2 Switch and Smart Match operator (switch とスマートマッチング演算子) =begin original The "switch" feature and the smartmatch operator, C<~~>, were introduced in v5.10. Their behavior was significantly changed in v5.10.1. When the "experiment" system was added in v5.18.0, switch and smartmatch were retroactively declared experimental. Over the years, proposals to fix or supplement the features have come and gone. =end original "switch" 機能と、スマートマッチング演算子 C<~~> は、v5.10 で導入されました。 これらの振る舞いは v5.10.1 で大きく変更されました。 「実験的」制度が v5.18.0 で追加されたとき、 switch とスマートマッチングは、遡及的に実験的と宣言されました。 長年にわたって、機能を修正または補完する提案が現れては消えていきました。 =begin original In v5.38.0, we are declaring the experiment a failure. Some future system may take the conceptual place of smartmatch, but it has not yet been designed or built. =end original v5.38.0 で、私達はこの実験が失敗であると宣言しました。 何らかの将来のシステムがスマートマッチングの概念的な代わりと なるかもしれませんが、まだ設計されたりビルドされたりはしていません。 =begin original These features will be entirely removed from perl in v5.42.0. =end original これらの機能は、v5.42.0 に perl から完全に削除される予定です。 =head1 Performance Enhancements (性能改善) =over 4 =item * =begin original Additional optree optimizations for common OP patterns. For example, multiple simple OPs replaced by a single streamlined OP, so as to be more efficient at runtime. [L], [L], [L]. =end original 一般的な OP パターンに対する追加の op 木最適化。 例えば、複数の単純な OP は一つの効率化された OP に置き換えられるので、 実行時により効率的になります。 [L], [L], [L]。 =item * =begin original Creating an anonymous sub no longer generates an C op, the reference generation is now done in the C or C op, saving runtime. [L] =end original 無名サブルーチンを作成してももはや C op を生成せず、 リファレンスの作成は C または C op で 行われるようになり、実行時間を節約します。 [L] =back =head1 Modules and Pragmata (モジュールとプラグマ) =head2 Updated Modules and Pragmata (更新されたモジュールとプラグマ) =over 4 =item * =begin original Added the C builtin function. [L] =end original C 組み込み関数が追加されました。 [L] =item * =begin original Added the C builtin function as per L. [L] =end original L により、C 組み込み関数が追加されました。 [L] =item * =begin original Support for L, C has been added to the default feature bundle for v5.38 and later. It may also be used explicitly. When enabled inside of a module the module does not need to return true explicitly, and in fact the return will be forced to a simple true value regardless of what it originally was. =end original L に対応するために、 C は、 v5.38 以降のデフォルト機能の束として追加されました。 これはまた明示的にも使われます。 モジュールの内部で有効のとき、 モジュールは明示的に真を返す必要はなく、実際には、 元々何を返したかに関わらず、単純な真の値を返すことを強制します。 =item * =begin original L has been upgraded from version 1.02 to 1.03. =end original L はバージョン 1.02 から 1.03 に更新されました。 =item * =begin original L has been upgraded from version 0.34 to 0.35. =end original L はバージョン 0.34 から 0.35 に更新されました。 =item * =begin original L has been upgraded from version 2.34 to 2.36. =end original L はバージョン 2.34 から 2.36 に更新されました。 =item * =begin original L has been upgraded from version 1.83 to 1.88. =end original L はバージョン 1.83 から 1.88 に更新されました。 =item * =begin original L has been upgraded from version 1.006 to 1.007. =end original L はバージョン 1.006 から 1.007 に更新されました。 =item * =begin original L has been upgraded from version 1.64 to 1.74. =end original L はバージョン 1.64 から 1.74 に更新されました。 =item * =begin original L has been upgraded from version 1.23 to 1.24. =end original L はバージョン 1.23 から 1.24 に更新されました。 =item * =begin original L has been upgraded from version 0.65 to 0.66. =end original L はバージョン 0.65 から 0.66 に更新されました。 =item * =begin original L has been upgraded from version 1.52 to 1.54. =end original L はバージョン 1.52 から 1.54 に更新されました。 =item * =begin original L has been upgraded from version 0.66 to 0.68. =end original L はバージョン 0.66 から 0.68 に更新されました。 =item * =begin original L has been upgraded from version 2.103 to 2.204_001. =end original L はバージョン 2.103 から 2.204_001 に更新されました。 =item * =begin original L has been upgraded from version 2.105 to 2.204_001. =end original L はバージョン 2.105 から 2.204_001 に更新されました。 =item * =begin original L has been upgraded from version 0.33 to 0.36. =end original L はバージョン 0.33 から 0.36 に更新されました。 =item * =begin original L has been upgraded from version 2.33 to 2.36. =end original L はバージョン 2.33 から 2.36 に更新されました。 =item * =begin original L has been upgraded from version 2.184 to 2.188. =end original L はバージョン 2.184 から 2.188 に更新されました。 =item * =begin original L has been upgraded from version 1.857 to 1.858. =end original L はバージョン 1.857 から 1.858 に更新されました。 =item * =begin original L has been upgraded from version 1.32 to 1.33. =end original L はバージョン 1.32 から 1.33 に更新されました。 =item * =begin original L has been upgraded from version 3.68 to 3.71. =end original L はバージョン 3.68 から 3.71 に更新されました。 =item * =begin original L has been upgraded from version 2.58 to 2.58_01. =end original L はバージョン 2.58 から 2.58_01 に更新されました。 =item * =begin original L has been upgraded from version 6.02 to 6.04. =end original L はバージョン 6.02 から 6.04 に更新されました。 =item * =begin original L has been upgraded from version 1.52 to 1.54. =end original L はバージョン 1.52 から 1.54 に更新されました。 =item * =begin original L has been upgraded from version 3.17 to 3.19. =end original L はバージョン 3.17 から 3.19 に更新されました。 =item * =begin original L has been upgraded from version 0.13 to 0.14. =end original L はバージョン 0.13 から 0.14 に更新されました。 =item * =begin original L has been upgraded from version 1.05 to 1.06. =end original L はバージョン 1.05 から 1.06 に更新されました。 =item * =begin original L has been upgraded from version 1.36 to 1.37. =end original L はバージョン 1.36 から 1.37 に更新されました。 =item * =begin original L has been upgraded from version 0.028 to 0.031. =end original L はバージョン 0.028 から 0.031 に更新されました。 =item * =begin original L has been upgraded from version 0.280236 to 0.280238. =end original L はバージョン 0.280236 から 0.280238 に更新されました。 =item * =begin original L has been upgraded from version 2.20 to 2.22. =end original L はバージョン 2.20 から 2.22 に更新されました。 =item * =begin original L has been upgraded from version 7.64 to 7.70. =end original L はバージョン 7.64 から 7.70 に更新されました。 =item * =begin original L has been upgraded from version 1.11 to 1.13. =end original L はバージョン 1.11 から 1.13 に更新されました。 =item * =begin original L has been upgraded from version 3.45 to 3.51. =end original L はバージョン 3.45 から 3.51 に更新されました。 =item * =begin original L has been upgraded from version 0.004 to 0.005. =end original L はバージョン 0.004 から 0.005 に更新されました。 =item * =begin original L has been upgraded from version 3.45 to 3.51. =end original L はバージョン 3.45 から 3.51 に更新されました。 =item * =begin original L has been upgraded from version 1.72 to 1.82. =end original L はバージョン 1.72 から 1.82 に更新されました。 =item * =begin original L has been upgraded from version 2.85 to 2.86. =end original L はバージョン 2.85 から 2.86 に更新されました。 =item * =begin original L has been upgraded from version 2.39 to 2.41. =end original L はバージョン 2.39 から 2.41 に更新されました。 =item * =begin original L has been upgraded from version 1.40 to 1.43. =end original L はバージョン 1.40 から 1.43 に更新されました。 =item * =begin original L has been upgraded from version 1.37 to 1.40. =end original L はバージョン 1.37 から 1.40 に更新されました。 =item * =begin original L has been upgraded from version 3.84 to 3.89. =end original L はバージョン 3.84 から 3.89 に更新されました。 =item * =begin original L has been upgraded from version 1.12 to 1.13. =end original L はバージョン 1.12 から 1.13 に更新されました。 =item * =begin original L has been upgraded from version 2.03 to 2.05. =end original L はバージョン 2.03 から 2.05 に更新されました。 =item * =begin original L has been upgraded from version 1.60 to 1.64. =end original L はバージョン 1.60 から 1.64 に更新されました。 =item * =begin original L has been upgraded from version 1.23 to 1.24. =end original L はバージョン 1.23 から 1.24 に更新されました。 =item * =begin original L has been upgraded from version 2.52 to 2.54. =end original L はバージョン 2.52 から 2.54 に更新されました。 =item * =begin original L has been upgraded from version 0.28 to 0.30. =end original L はバージョン 0.28 から 0.30 に更新されました。 =item * =begin original L has been upgraded from version 0.080 to 0.083. =end original L はバージョン 0.080 から 0.083 に更新されました。 =item * =begin original L has been upgraded from version 0.21 to 0.22. =end original L はバージョン 0.21 から 0.22 に更新されました。 =item * =begin original L has been upgraded from version 1.50 to 1.52. =end original L はバージョン 1.50 から 1.52 に更新されました。 =item * =begin original IO-Compress has been upgraded from version 2.106 to 2.204. =end original IO-Compress はバージョン 2.106 から 2.204 に更新されました。 =item * =begin original L has been upgraded from version 0.41 to 0.41_01. =end original L はバージョン 0.41 から 0.41_01 に更新されました。 =begin original On DragonflyBSD, detect setsockopt() not actually clearing C even when setsockopt() returns success. [L] =end original DragonflyBSD で、setsockopt() が成功を返しても 実際には C をクリアしていないことを検出します。 [L] =item * =begin original L has been upgraded from version 1.11 to 1.14. =end original L はバージョン 1.11 から 1.14 に更新されました。 =item * =begin original L has been upgraded from version 4.07 to 4.16. =end original L はバージョン 4.07 から 4.16 に更新されました。 =item * =begin original libnet has been upgraded from version 3.14 to 3.15. =end original libnet はバージョン 3.14 から 3.15 に更新されました。 =item * =begin original L has been upgraded from version 1.31 to 1.33. =end original L はバージョン 1.31 から 1.33 に更新されました。 =item * =begin original L has been upgraded from version 1.999830 to 1.999837. =end original L はバージョン 1.999830 から 1.999837 に更新されました。 =item * =begin original L has been upgraded from version 0.5012 to 0.5013. =end original L はバージョン 0.5012 から 0.5013 に更新されました。 =item * =begin original L has been upgraded from version 0.2621 to 0.2624. =end original L はバージョン 0.2621 から 0.2624 に更新されました。 =item * =begin original L has been upgraded from version 1.5902 to 1.62. =end original L はバージョン 1.5902 から 1.62 に更新されました。 =item * =begin original L has been upgraded from version 1.03_01 to 1.16. =end original L はバージョン 1.03_01 から 1.16 に更新されました。 =item * =begin original L has been upgraded from version 3.16 to 3.16_01. =end original L はバージョン 3.16 から 3.16_01 に更新されました。 =item * =begin original L has been upgraded from version 5.20220520 to 5.20230520. =end original L はバージョン 5.20220520 から 5.20230520 に更新されました。 =item * =begin original L has been upgraded from version 1.26 to 1.28. =end original L はバージョン 1.26 から 1.28 に更新されました。 =item * =begin original L has been upgraded from version 1.15 to 1.16. =end original L はバージョン 1.15 から 1.16 に更新されました。 =item * =begin original L has been upgraded from version 2.74 to 2.76. =end original L はバージョン 2.74 から 2.76 に更新されました。 =item * =begin original L has been upgraded from version 1.17 to 1.18. =end original L はバージョン 1.17 から 1.18 に更新されました。 =item * =begin original L has been upgraded from version 1.57 to 1.64. =end original L はバージョン 1.57 から 1.64 に更新されました。 =item * =begin original L has been upgraded from version 1.35 to 1.37. =end original L はバージョン 1.35 から 1.37 に更新されました。 =item * =begin original L has been upgraded from version 0.238 to 0.241. =end original L はバージョン 0.238 から 0.241 に更新されました。 =item * =begin original L has been upgraded from version 0.09 to 0.10. =end original L はバージョン 0.09 から 0.10 に更新されました。 =item * =begin original L has been upgraded from version 1.74 to 1.75. =end original L はバージョン 1.74 から 1.75 に更新されました。 =item * =begin original L has been upgraded from version 1.33 to 1.34. =end original L はバージョン 1.33 から 1.34 に更新されました。 =item * =begin original L has been upgraded from version 2.01 to 2.03. =end original L はバージョン 2.01 から 2.03 に更新されました。 =item * =begin original L has been upgraded from version 4.14 to 5.01. =end original L はバージョン 4.14 から 5.01 に更新されました。 =item * =begin original L has been upgraded from version 2.03 to 2.13. =end original L はバージョン 2.03 から 2.13 に更新されました。 =item * =begin original L has been upgraded from version 0.43 to 0.44. =end original L はバージョン 0.43 から 0.44 に更新されました。 =item * =begin original L has been upgraded from version 2.43 to 2.44. =end original L はバージョン 2.43 から 2.44 に更新されました。 =item * =begin original L has been upgraded from version 1.62 to 1.63. =end original L はバージョン 1.62 から 1.63 に更新されました。 =item * =begin original L has been upgraded from version 1.15 to 1.17. =end original L はバージョン 1.15 から 1.17 に更新されました。 =item * =begin original L has been upgraded from version 2.033 to 2.036. =end original L はバージョン 2.033 から 2.036 に更新されました。 =item * =begin original L has been upgraded from version 3.26 to 3.32. =end original L はバージョン 3.26 から 3.32 に更新されました。 =item * =begin original L has been upgraded from version 1.24 to 1.25. =end original L はバージョン 1.24 から 1.25 に更新されました。 =item * =begin original L has been upgraded from version 1.17 to 1.18. =end original L はバージョン 1.17 から 1.18 に更新されました。 =item * =begin original L has been upgraded from version 1.302190 to 1.302194. =end original L はバージョン 1.302190 から 1.302194 に更新されました。 =item * =begin original L has been upgraded from version 2.04 to 2.06. =end original L はバージョン 2.04 から 2.06 に更新されました。 =item * =begin original L has been upgraded from version 2.27 to 2.36. =end original L はバージョン 2.27 から 2.36 に更新されました。 =item * =begin original L has been upgraded from version 1.64 to 1.68. =end original L はバージョン 1.64 から 1.68 に更新されました。 =item * =begin original L has been upgraded from version 1.06 to 1.07. =end original L はバージョン 1.06 から 1.07 に更新されました。 =item * =begin original L has been upgraded from version 1.9770 to 1.9775. =end original L はバージョン 1.9770 から 1.9775 に更新されました。 =item * =begin original L has been upgraded from version 1.3401 to 1.3401_01. =end original L はバージョン 1.3401 から 1.3401_01 に更新されました。 =item * =begin original L has been upgraded from version 1.31 to 1.32. =end original L はバージョン 1.31 から 1.32 に更新されました。 =item * =begin original L has been upgraded from version 1.14 to 1.15. =end original L はバージョン 1.14 から 1.15 に更新されました。 =item * =begin original L has been upgraded from version 1.03 to 1.04. =end original L はバージョン 1.03 から 1.04 に更新されました。 =item * =begin original L has been upgraded from version 1.01 to 1.02. =end original L はバージョン 1.01 から 1.02 に更新されました。 =item * =begin original L has been upgraded from version 1.24 to 1.25. =end original L はバージョン 1.24 から 1.25 に更新されました。 =item * =begin original L has been upgraded from version 1.58 to 1.65. =end original L はバージョン 1.58 から 1.65 に更新されました。 =item * =begin original L has been upgraded from version 1.22 to 1.32. =end original L はバージョン 1.22 から 1.32 に更新されました。 =item * =begin original L has been upgraded from version 0.31 to 0.32. =end original L はバージョン 0.31 から 0.32 に更新されました。 =back =head1 Documentation (文書) =head2 New Documentation (新しい文書) =head3 L =begin original Describes the new C feature. =end original 新しい C 機能を記述しています。 =head3 L =begin original Describes the internals of the new C feature. =end original 新しい C 機能の内部を記述しています。 =head2 Changes to Existing Documentation (既存の文書の変更) =begin original We have attempted to update the documentation to reflect the changes listed in this document. If you find any we have missed, open an issue at L. =end original 私たちはこの文書で挙げられた変更を反映するように文書を更新しようとしています。 もし抜けている物を発見したら、 L でイシューを開いてください。 =begin original Additionally, the following selected changes have been made: =end original それに加えて、以下のような変更が行われました。 =head3 L =over 4 =item * =begin original Documented L|perlapi/hv_ksplit> =end original L|perlapi/hv_ksplit> を文書化しました =item * =begin original Documented L|perlapi/hv_name_set> =end original L|perlapi/hv_name_set> を文書化しました =item * =begin original L|perlapi/hv_store> and L|perlapi/hv_stores> documentation have been greatly improved. =end original L|perlapi/hv_store> と L|perlapi/hv_stores> の 文書が大幅に改良されました。 =item * =begin original Documented L|perlapi/gv_autoload_pv> =end original L|perlapi/gv_autoload_pv> を文書化しました =item * =begin original Documented L|perlapi/gv_autoload_pvn> =end original L|perlapi/gv_autoload_pvn> を文書化しました =item * =begin original Documented L|perlapi/gv_autoload_sv> =end original L|perlapi/gv_autoload_sv> を文書化しました =item * =begin original Documented L|perlapi/gv_name_set> =end original L|perlapi/gv_name_set> を文書化しました =item * =begin original Documented L|perlapi/start_subparse> =end original L|perlapi/start_subparse> を文書化しました =item * =begin original Documented L|perlapi/SV_CHECK_THINKFIRST_COW_DROP> =end original L|perlapi/SV_CHECK_THINKFIRST_COW_DROP> を文書化しました =item * =begin original Documented L|perlapi/SV_CHECK_THINKFIRST> =end original L|perlapi/SV_CHECK_THINKFIRST> を文書化しました =item * =begin original Documented L|perlapi/SvPV_shrink_to_cur> =end original L|perlapi/SvPV_shrink_to_cur> を文書化しました =item * =begin original Documented L|perlapi/save_aelem> =end original L|perlapi/save_aelem> を文書化しました =item * =begin original Documented L|perlapi/save_aelem_flags> =end original L|perlapi/save_aelem_flags> を文書化しました =item * =begin original Documented L|perlapi/save_helem> =end original L|perlapi/save_helem> を文書化しました =item * =begin original Documented L|perlapi/save_helem_flags> =end original L|perlapi/save_helem_flags> を文書化しました =back =head3 L =over 4 =item * =begin original Added information about unscheduled deprecations and their categories. =end original 予定されていない廃止予定とそのカテゴリに関する情報が追加されました。 =item * =begin original Added category information for existing scheduled deprecations. =end original 既に予定されている廃止予定に関するカテゴリ情報を追加しました。 =item * =begin original Added smartmatch and apostrophe as a package separator deprecation data. =end original スマートマッチングとパッケージと区切りとしてのアポストロフィの 廃止予定情報を追加しました。 =back =head3 L =over 4 =item * =begin original Documented L|perlintern/save_pushptr> =end original L|perlintern/save_pushptr> を文書化しました =item * =begin original Documented L|perlintern/save_scalar_at> =end original L|perlintern/save_scalar_at> を文書化しました =item * =begin original Entries have been added to L for the new C, C and C<*_simple> functions. =end original 新しい C, C, C<*_simple> 関数のエントリを L に追加されました。 =item * =begin original References to the now-defunct PrePAN service have been removed from L and L. =end original 今はなき PrePAN サービスに関する参照が L と L から削除されました。 =item * =begin original A section on symbol naming has been added to L. =end original シンボルの名付けの節が L に追加されました。 =item * =begin original L has been edited to properly reference the warning categories for the defer block modifier and extra paired delimiters for quote-like operators. =end original L は、defer ブロック修飾子とクォート風演算子の 追加の組の区切り文字に関する警告カテゴリについて適切に参照するように 編集されました。 =back =head3 L =over 4 =item * =begin original Smartmatch has been moved from experimental status to deprecated status. Unfortunately the experiment did not work out. =end original スマートマッチングは、状態が実験的から廃止予定に移動しました。 残念ながら実験は良い結果となりませんでした。 =back =head3 L =over 4 =item * =begin original Some wording improvements have been made for the C, C, C and C functions, as well as additional examples added. =end original C, C, C, C 関数の一部の表現が改善され、 例が追加されました。 =back =head3 perlhacktips =over 4 =item * =begin original A new section, L has been added to discuss pitfalls and solutions to using C macros in C and XS code. =end original C と XS コードで C マクロを使うことの落し穴と解決法を議論する 新しい節である L が追加されました。 =item * =begin original A new section, L, has been added to discuss unexpected gotchas with names. =end original 名前に関する想定外の問題を議論する新しい節である L が追加されました。 =back =head3 L =over 4 =item * =begin original Document the behavior of matching the empty pattern better and specify its relationship to the new C<${^LAST_SUCCESSFUL_PATTERN}> properly. =end original 空パターンのマッチングの振る舞いをより良く文書化し、 その新しい C<${^LAST_SUCCESSFUL_PATTERN}> とそれとの関係について適切に 指定しました。 =back =cut =head3 L =over 4 =item * =begin original Added a section on "Scoping Rules of Regex Variables", and other wording improvements made throughout. =end original "Scoping Rules of Regex Variables" 節を追加し、 あちこちでその他の表現の改良が行われました。 =item * =begin original Added information on the new C<%{^HOOK}> interface, and the new C and C hooks which it exposes. =end original 新しい C<%{^HOOK}> インターフェースと、それが露出させている 新しい C と C フックに 関する情報を追加されました。 =item * =begin original Correct information on the regex variables C<${^PREMATCH}>, C<${^MATCH}> and C<${^POSTMATCH}>, all of which were incorrectly documented due to an oversight. Specifically they only work properly after a regex operation that used the /p modifier to enable them. =end original 正規表現変数 C<${^PREMATCH}>, C<${^MATCH}>, C<${^POSTMATCH}> の 情報を修正しました; これら全ては、不注意により誤って文書化されていました。 特に、これらは有効にするために /p 修飾子を使った正規表現処理の 後でだけ適切に動作します。 =item * =begin original Added information on the new regex variable C<${^LAST_SUCCESSFUL_PATTERN}>, which represents the pattern of the last successful regex match in scope. =end original スコープ内で最後に成功した正規表現マッチングパターンを表現する 新しい正規表現変数 C<${^LAST_SUCCESSFUL_PATTERN}> の情報を追加しました。 =back =head1 Diagnostics (診断メッセージ) =begin original The following additions or changes have been made to diagnostic output, including warnings and fatal error messages. For the complete list of diagnostic messages, see L. =end original 次のような追加と変更が、警告や致命的エラーメッセージを含む診断出力に 行われました。 診断メッセージの完全な一覧については、L を参照してください。 =head2 New Diagnostics (新しい警告メッセージ) =head3 New Errors (新しいエラー) =over 4 =item * =begin original A new syntax error has been added for the error that a C block does not have its required variable declaration. See L =end original C ブロックに必要な変数宣言がないエラーのための新しい 文法エラーが追加されました。 L を 参照してください。 =item * L =item * L =item * L =item * L =begin original (F) You are attempting to call C with a package name that is a new-style C. This is not necessary, as instances created by the constructor are already in the correct class. Instances cannot be created by other means, such as C. =end original (F) 新しいスタイルの C であるパッケージ名に C を 呼び出そうとしました。 コンストラクタによって作られた実体は、すでに正しいクラスにいるので、 これは不要です。 実体は、C のようなその他の方法で作ることはできません。 =item * L =begin original (F) An attempt was made to apply a parameter name to a field, when the name is already being used by another field in the same class, or one of its parent classes. This would cause a name clash so is not allowed. =end original (F) フィールドにパラメータ名を適用しようとしましたが、 その名前は既に同じクラスまたはその親クラスのその他のフィールドで 使われています。 これは名前の衝突を引き起こすので、許されていません。 =item * L =begin original (F) An attempt was made to create a class out of a package that already has an C<@ISA> array, and the array is not empty. This is not permitted, as it would lead to a class with inconsistent inheritance. =end original (F) C<@ISA> 配列が空でなく、その配列に既にパッケージがあるクラスを 作ろうとしました。 これは一貫性のない継承をもつクラスになるので、許されません。 =item * L =begin original (F) You tried to directly call a C subroutine of one class by passing in a value that is an instance of a different class. This is not permitted, as the method would not have access to the correct instance fields. =end original (F) 異なるクラスの実体である値を渡すことで、 一つのクラスの C サブルーチンを直接呼び出そうとしました。 メソッドは正しい実体フィールドへのアクセスを持っていないので、 これは許されません。 =item * L =begin original (F) You tried to directly call a C subroutine of a class by passing in a value that is not an instance of that class. This is not permitted, as the method would not then have access to its instance fields. =end original (F) クラスのインスタンスではない値の中で渡すことで、 あるクラスの C サブルーチンを直接呼び出そうとしました。 メソッドは正しい実体フィールドへのアクセスを持っていないので、 これは許されません。 =item * L =begin original (F) You attempted to use one of the keywords that only makes sense inside a C definition, at a location that is not inside such a class. =end original (F) C 定義の中でのみ意味があるキーワードの一つを、 そのようなクラスの中でない場所で使おうとしました。 =item * L =begin original (F) You tried to begin a C definition for a class that already exists. A class may only have one definition block. =end original (F) 既に存在しているクラスに対する C 定義を始めようとしました。 一つのクラスは一つだけの定義ブロックを持ちます。 =item * L =begin original (F) You attempted to call C on a value that already refers to a real object instance. =end original (F) 既にオブジェクトの実体を参照している値に C を 呼び出そうとしました。 =item * L =begin original (F) On Cygwin, you called a path conversion function with an empty path. Only non-empty paths are legal. =end original (F) Cygwin で、空のパスでパス変換関数を呼び出しました。 空でないパスのみが正当です。 =item * L =begin original (F) You attempted to specify a second superclass for a C by using the C<:isa> attribute, when one is already specified. Unlike classes whose instances are created with C, classes created via the C keyword cannot have more than one superclass. =end original (F) C に対して、既に一つスーパークラスが指定されているときに、 C<:isa> 属性を使って二つ目を指定しようとしました。 C で作られた実体のクラスと異なり、 C キーワードで作られたクラスは複数のスーパークラスを作れません。 =item * L =begin original (F) You specified an attribute for a class that would require a value to be passed in parentheses, but did not provide one. Remember that whitespace is B permitted between the attribute name and its value; you must write this as =end original (F) かっこ付きで値を渡す必要がある属性をクラスに設定しようとしましたが、 値がありませんでした。 空白は属性名とその値の間には B<許されない> ということを忘れないでください; 次のように書く必要があります: class Example::Class :attr(VALUE) ... =item * L =begin original (F) When creating a subclass using the C C<:isa> attribute, the named superclass must also be a real class created using the C keyword. =end original (F) C C<:isa> 属性を使ってサブクラスを作るとき、 指名されたスーパークラスもまた C キーワードを使って作られた 実際のクラスでなければなりません。 =item * L =begin original (F) A field may have at most one application of the C<:param> attribute to assign a parameter name to it; once applied a second one is not allowed. =end original (F) 一つのフィールドには、引数名を割り当てるための C<:param> 属性は最大一つまで適用できます; 一つが適用されていると二つ目は許されません。 =item * L =begin original (F) You specified an attribute for a field that would require a value to be passed in parentheses, but did not provide one. Remember that whitespace is B permitted between the attribute name and its value; you must write this as =end original (F) かっこ付きで値を渡す必要がある属性をフィールドに設定しようとしましたが、 値がありませんでした。 空白は属性名とその値の間には B<許されない> ということを忘れないでください; 次のように書く必要があります: field $var :attr(VALUE) ... =item * L =begin original (F) An attempt was made to access a field variable of a class from code that does not appear inside the body of a C subroutine. This is not permitted, as only methods will have access to the fields of an instance. =end original (F) C サブルーチンの本体の内側ではないように見えるコードから クラスのフィールド変数にアクセスしようとしました。 メソッドだけが実体のフィールドにアクセスできるので、 これは許されません。 =item * L =begin original (F) An attempt was made to access a field variable of a class, from a method of another class nested inside the one that actually defined it. This is not permitted, as only methods defined by a given class are permitted to access fields of that class. =end original (F) 実際に定義されているものの内側にネストしているクラスのメソッドから クラスのフィールド変数にアクセスしようとしました。 メソッドだけが実体のフィールドにアクセスできるので、 これは許されません。 =item * L =begin original (F) You tried to apply the C<:param> attribute to an array or hash field. Currently this is not permitted. =end original (F) C<:param> 属性を配列やハッシュのフィールドに適用しようとしました。 現在の所これは許されていません。 =item * L =begin original (F) You called the constructor for a class that has a required named parameter, but did not pass that parameter at all. =end original (F) 必須の名前付き引数を持つクラスのコンストラクタを呼び出しましたが、 引数を全く渡しませんでした。 =item * L =begin original (F) You tried to specify something other than a single class name with an optional trailing version number as the value for a C C<:isa> attribute. This confused the parser. =end original (F) C C<:isa> 属性の値として、単一のクラス名にオプションで 末尾にバージョン番号がついているもの以外のものを指定しようとしました。 これはパーサを混乱させます。 =item * L =begin original (F) You attempted to add a named attribute to a C definition, but perl does not recognise the name of the requested attribute. =end original (F) C 定義に特定の名前の属性を追加しようとしましたが、 perl は要求された属性の名前を認識できませんでした。 =item * L =begin original (F) You attempted to add a named attribute to a C definition, but perl does not recognise the name of the requested attribute. =end original (F) C 定義に特定の名前の属性を追加しようとしましたが、 perl は要求された属性の名前を認識できませんでした。 =item * L<${^HOOK}{%s} may only be a CODE reference or undef|perldiag/"${^HOOK}{%s} may only be a CODE reference or undef"> =item * L =item * L =item * L%sE|perldiag/"Too many capture groups (limit is %d) in regex m/%s/"> =back =head3 New Warnings (新しい警告) =over 4 =item * L =begin original This is a shortened form of an already existing diagnostic, for use when there is no new locale being switched to. The previous diagnostic was misleading in such circumstances. =end original これは、切り替えようとしている新しいロケールがないときに使うための、 既にある診断メッセージの短い形式です。 以前の診断メッセージはこのような状況では誤解を招くものでした。 =item * L =item * L =item * L =item * L<%s on BEGIN block ignored|perldiag/"%s on BEGIN block ignored"> =item * L =begin original (S experimental::class) This warning is emitted if you use the C keyword of C. This keyword is currently experimental and its behaviour may change in future releases of Perl. =end original (S experimental::class) この警告は、 C の C キーワードを使うと出力されます。 このキーワードは現在のところ実験的で、その振る舞いは Perl の 将来のリリースでは変更される可能性があります。 =item * L =begin original (S experimental::class) This warning is emitted if you use the C keyword of C. This keyword is currently experimental and its behaviour may change in future releases of Perl. =end original (S experimental::class) この警告は、 C の C キーワードを使うと出力されます。 このキーワードは現在のところ実験的で、その振る舞いは Perl の 将来のリリースでは変更される可能性があります。 =item * L =begin original (W redefine) You redefined a method. To suppress this warning, say =end original (W redefine) メソッドを再定義しました。 この警告を抑制するには、次のようにします: { no warnings 'redefine'; *name = method { ... }; } =item * L =begin original (W misc) You specified an odd number of elements to initialise a hash field of an object. Hashes are initialised from a list of key/value pairs so there must be a corresponding value to every key. The final missing value will be filled in with undef instead. =end original (W misc) オブジェクトのハッシュフィールドの初期化に奇数個の要素を 指定しました。 ハッシュはキー/値の組で初期化されるので、全てのキーには対応する値が なければなりません。 最後に足りない値は代わりに未定義値で埋められました。 =item * L =begin original (W deprecated, syntax) You used the old package separator "'" in a variable, subroutine or package name. Support for the old package separator will be removed in Perl 5.40. =end original (W deprecated, syntax) 変数、サブルーチン、パッケージ名に 古いパッケージ区切り文字である "'" を使いました。 古いパッケージ区切り文字は Perl 5.40 で削除される予定です。 =item * L =begin original (S experimental::class) This warning is emitted if you use the C keyword of C. This keyword is currently experimental and its behaviour may change in future releases of Perl. =end original (S experimental::class) この警告は、 C の C キーワードを使うと出力されます。 このキーワードは現在のところ実験的で、その振る舞いは Perl の 将来のリリースでは変更される可能性があります。 =item * L =begin original (S experimental::class) This warning is emitted if you use the C keyword of C. This keyword is currently experimental and its behaviour may change in future releases of Perl. =end original (S experimental::class) この警告は、 C の C キーワードを使うと出力されます。 このキーワードは現在のところ実験的で、その振る舞いは Perl の 将来のリリースでは変更される可能性があります。 =item * L =back =head2 Changes to Existing Diagnostics (既存の診断メッセージの変更) =over 4 =item * =begin original The compiler will now stop parsing on the first syntax error it encounters. Historically the compiler would attempt to "skip past" the error and continue parsing so that it could list multiple errors. For things like undeclared variables under strict this makes sense. For syntax errors however it has been found that continuing tends to result in a storm of unrelated or bizarre errors that mostly just obscure the true error. In extreme cases it can even lead to segfaults and other incorrect behavior. =end original コンパイラは、最初に遭遇した文法エラーでパースを停止するようになりました。 歴史的に、コンパイラは複数のエラーを表示するために、 エラーを「飛び越し」して、パースを続けようとしていました。 strict 下での未定義変数のようなものについてはこれは意味があります。 しかし、文法エラーについては、続けることは、単に真のエラーを 分かりにくくするだけの無関係あるいはおかしなエラーの嵐を 引き起こす傾向があることがわかりました。 極端な場合では、セグメンテーションフォルトやその他の正しくない振る舞いを 引き起こすことすらありました。 =begin original Therefore we have reformed the continuation logic so that the parse will stop after the first seen syntax error. Semantic errors like undeclared variables will not stop the parse, so you may still see multiple errors when compiling code. However if there is a syntax error it will be the last error message reported by perl and all of the errors that you see will be something that actually needs to be fixed. =end original 従って、パースは最初に見えた文法エラーの後で止まるように 継続のロジックを改良しました。 未定義変数のような意味論のエラーはパースを止めないので、 まだコードのコンパイル中に複数のエラーがでることがあります。 しかし、文法エラーがある場合、perl によって報告された最後の エラーメッセージと表示された全てのエラーは、 実際に修正する必要があるものです。 =item * =begin original Error messages that output class or package names have been modified to output double quoted strings with various characters escaped so as to make the exact value clear to a reader. The exact rules on which characters are escaped may change over time but currently are that printable ASCII codepoints, with the exception of C<"> and C<\>, and unicode word characters whose codepoint is over 255 are output raw, and any other symbols are escaped much as Data::Dumper might escape them, using C<\n> for newline and C<\"> for double quotes, etc. Codepoints in the range 128-255 are always escaped as they can cause trouble on unicode terminals when output raw. =end original クラスやパッケージの名前を出力するエラーメッセージは、 正確な値が読者に明確になるように、様々な文字がエスケープされた、 ダブルクォートでくくられた文字列を出力するように変更されました。 どの文字がエスケープされるかの正確な規則はやがて変更されるかもしれませんが、 現在の所は C<"> と C<\> 以外の表示可能な ASCII 符号位置と、符号位置が 255 を超える unicode の単語文字はそのまま出力され、その他のシンボルは Data::Dumper がエスケープするのと同様に、 改行は C<\n>、ダブルクォートは C<\"> という風にエスケープします。 128-255 の範囲の符号位置は、unicode 端末にそのまま出力すると 問題を引き起こすかもしれないので、常にエスケープされます。 =begin original In older versions of perl the one liner =end original 古いバージョンの perl では、ワンライナー $ perl -le'"thing\n"->foo()' =begin original would output the following error message exactly as shown here, with text spread over multiple lines because the "\n" would be emitted as a raw newline character: =end original は、次のエラーメッセージを正確に次に示すような形で、複数行にわたって 表示します; "\n" は生の改行文字として出力されるからです: Can't locate object method "foo" via package "thing " (perhaps you forgot to load "thing "?) at -e line 1. =begin original As of this release we would output this instead (as one line): =end original このリリース以降、代わりに (1 行で) 次を出力します: Can't locate object method "foo" via package "thing\n" (perhaps you forgot to load "thing\n"?) at -e line 1. =begin original Notice the newline in the package name has been quoted and escaped, and thus the error message is a single line. The text is shown here wrapped to two lines only for readability. =end original パッケージ名の改行はクォートおよびエスケープされ、従って エラーメッセージは 1 行で表示されます。 ここでの前述のテキストは見やすさのためだけに 2 行に 折りたたまれています。 =item * =begin original When package or class names in errors are very large the middle excess portion will be elided from the message. As of this release error messages will show only up to the first 128 characters and the last 128 characters in a package or class name in error messages. For example =end original エラーの中のパッケージやクラスの名前がとても長い場合、中間部分は メッセージから省略されます。 このリリースから、エラーメッセージのパッケージやクラスの名前は 最大で最初の 128 文字と最後の 128 文字のみが表示されます。 例えば $ perl -le'("Foo" x 1000)->new()' =begin original will output the following as one line: =end original これは次のものを 1 行で表示します: Can't locate object method "new" via package "FooFooFooFooFooFooFoo FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo FooFooFooFooFooFooFooFooFooFooFooFooFooFo"..."oFooFooFooFooFooFooFoo FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo FooFooFooFooFooFooFooFooFooFooFooFooFoo" (perhaps you forgot to load "FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFo"... "oFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo FooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFooFoo"?) at -e line 1. =begin original Notice the C< "prefix"..."suffix" > form of the package name in this case. In previous versions of perl the complete string would have been shown making the error message over 6k long and there was no upper limit on the length of the error message at all. If you accidentally used a 1MB string as a class name then the error message would be over 2MB long. In this perl the upper limit should be around 2k when eliding and escaping are taken into account. =end original この場合、パッケージ名の C< "先頭"..."末尾" > 形式に注目してください。 以前のバージョンの perl では、完全な文字列が表示されることで エラーメッセージは 6k 以上の長さになり、エラーメッセージの長さの上限は 全くありませんでした。 もし事故でクラス名として 1MB の文字列を使うと、エラーメッセージは 2MB 以上の長さになっていました。 この Perl では、省略とエスケープを考慮すると 2k ぐらいになるはずです。 =item * =begin original Removed C<< Complex regular subexpression recursion limit (%d) exceeded >> =end original C<< Complex regular subexpression recursion limit (%d) exceeded >> は 削除されました =begin original The regular expresion engine has not used recursion in some time. This warning no longer makes sense. =end original 正規表現エンジンは場合によって再帰を使わなくなりました。 この警告はもはや意味がありません。 =begin original See [L]. =end original [L] を 参照してください。 =item * =begin original Various warnings that used to produce parenthesized hints underneath the main warning message and after its "location data" were chanaged to put the hint inline with the main message. For instance: =end original メインの警告メッセージの下、その「位置情報」の後にかっこ付きの ヒントを生成するために使われる様々な警告は、 メインのメッセージにインラインでヒントを置くように変更されました。 例えば: Bareword found where operator expected at -e line 1, near "foo bar" (Do you need to predeclare foo?) =begin original will now look like this but as one line: =end original これは次のようなものを 1 行で表示します: Bareword found where operator expected (Do you need to predeclare foo?) at -e line 1, near "foo bar" =begin original as a result such warnings will no longer trigger C<$SIG{__WARN__}> twice, and the hint will be visible when fatal warnings is in effect. =end original このような警告はもはや C<$SIG{__WARN__}> を 2 回引き起こすことはなく、 警告の致命的エラー化が有効の場合はヒントが表示されます。 =item * =begin original The error message that is produced when a C or C statement fails has been changed. It used to contain the words C<@INC contains:>, and it used to show the state of C<@INC> *after* the require had completed and failed. The error message has been changed to say C<@INC entries checked:> and to reflect the actual directories or hooks that were executed during the require statement. For example: =end original C や C 分が失敗したときに出力される エラーメッセージが変更されました。 以前は C<@INC contains:> という単語と、require が完了して失敗した 「後」の C<@INC> の状態を表示していました。 エラーメッセージは、 C<@INC entries checked:> と、require 文の間に実行された 実際のディレクトリまたはフックを反映するように変更されました。 例えば: perl -e'push @INC, sub {@INC=()}; eval "require Frobnitz" or die $@' Can't locate Frobnitz.pm in @INC (you may need to install the Frobnitz module) (@INC contains:) at (eval 1) line 1. =begin original Will change to (with some output elided for clarity): =end original これは次のように変わります (明確化のために一部の出力は省略されています): perl -e'push @INC, sub {@INC=()}; eval "require Frobnitz" or die $@' Can't locate Frobnitz.pm in @INC (you may need to install the Frobnitz module) (@INC entries checked: .../site_perl/5.38.0/x86_64-linux .../site_perl/5.38.0 .../5.38.0/x86_64-linux .../5.38.0 CODE(0x562745e684b8)) at (eval 1) line 1. =begin original thus showing the actual directories checked. Code that checks for C<@INC contains:> in error messages should be hardened against any future wording changes between the C<@INC> and C<:>, for instance use C instead of using C or C in tests as this will ensure both forward and backward compatibility. =end original 従って実際にチェックされたディレクトリが表示されます。 エラーメッセージの C<@INC contains:> をチェックしているコードは、 C<@INC> と C<:> の間の単語の変更に対して強化する必要があります; 例えば、前方互換性と後方互換性のために、 C や C ではなく C を使うなどです。 =item * L =begin original This diagnostic is now also part of the C category. =end original この診断メッセージは C カテゴリの一部にもなりました。 =item * =begin original L replaces C. =end original L は C を置き換えます。 =item * =begin original L replaces C. =end original L は C を置き換えます。 =item * =begin original L replaces C. =end original L は C を置き換えます。 =back =head1 Configuration and Compilation (設定とコンパイル) =over 4 =item * =begin original C could fail due to a build conflict in building C<$(MINIPERL_EXE)> between the main make process and a child process. [L] =end original C は、メイン make プロセスと子プロセスの間で C<$(MINIPERL_EXE)> のビルド中にビルドの衝突により 失敗することがありました。 [L] =item * =begin original Properly populate osvers on Dragonfly BSD when the hostname isn't set. =end original Dragonfly BSD でホスト名が設定されていないときに 適切に osvers を設定します。 =item * =begin original Fix typos for C99 macro name C. =end original C99 のマクロ名 C のタイプミスを修正しました。 =item * =begin original Remove ancient and broken GCC for VMS support =end original 古く壊れている GCC for VMS 対応を削除しました。 =item * =begin original Remove vestigial reference to C qualifier =end original C 限定子への参照の痕跡を削除しました。 =item * =begin original Remove sharedperl option on VMS =end original VMS の sharedperl オプションを削除しました。 =item * =begin original VMS now has mkostemp =end original VMS は mkostemp を持ちます。 =item * =begin original C now properly handles quoted elements outputted by gcc. [L] =end original C は、gcc によって出力されたクォート付きの要素を 適切に扱えるようになりました。 [L] =item * =begin original C probed for the return type of malloc() and free() by testing whether declarations for those functions produced a function type mismatch with the implementation. On Solaris, with a C++ compiler, this check always failed, since Solaris instead imports malloc() and free() from C with C for C++ builds. Since the return types of malloc() and free() are well defined by the C standard, skip probing for them. C command-line arguments and hints can still override these type in the unlikely case that is needed. [L] =end original C は、関数の型が生成した、関数のための宣言と、実装が 一致しているかをテストすることで、malloc() と free() の返り値の型を 検査していました。 Solaris の C++ コンパイラでは、このチェックは常に失敗します; Solaris は C++ ビルドでは C によって C から malloc() と free() をインポートするからです。 malloc() と free() の返り値の型は C 標準によって明確に定義されているので、 これの検査を飛ばすようになりました。 C コマンドライン引数とヒントによって、 これが必要であるというありそうにない場合のためにこれらの型を上書きすることは まだできます。 [L] =back =head1 Testing (テスト) =begin original Tests were added and changed to reflect the other additions and changes in this release. Furthermore, these significant changes were made: =end original このリリースのその他の追加と変更を反映してテストが追加、変更されました。 さらに、主に以下のような変更が行われました: =over 4 =item * =begin original Unicode normalization tests have been added. =end original Unicode 正規化テストが追加されました。 =item * =begin original t/test.pl: Add ability to cancel an watchdog timer =end original t/test.pl: 番犬タイマーをキャンセルする機能が追加されました。 =back =head1 Platform Support (プラットフォーム対応) =head2 Discontinued Platforms (廃止されたプラットフォーム) =over 4 =item Ultrix =begin original Support code for DEC Ultrix has been removed. Ultrix was the native Unix-like operating system for various Digital Equipment Corporation machines. Its final release was in 1995. =end original DEC Ultrix のための対応コードが削除されました。 Ultrix は、様々な Digital Equipment Corporation マシンのための ネイティブな Unix 風のオペレーティングシステムです。 この最後のリリースは 1995 年でした。 =back =head2 Platform-Specific Notes (プラットフォーム固有の注意) =over 4 =item DragonflyBSD =begin original Skip tests to workaround an apparent bug in C. [L] =end original setproctitle() の明らかなバグを回避するためにテストをスキップします。 [L] =item FreeBSD =begin original FreeBSD no longer uses thread-safe locale operations, to avoid L =end original FreeBSD は、 L を 回避するために、スレッドセーフなロケール操作を使わなくなりました。 =begin original Replace the first part of archname with C [L] =end original archname の最初の部分を `uname -p` で置き換えました [L] =item Solaris =begin original Avoid some compiler and compilation issues on NetBSD/Solaris from regexec.c and regcomp.c. =end original NetBSD/Solaris での regexec.c と regcomp.c の 一部のコンパイラとコンパイル時の問題を起きないようにしました。 =item Synology =begin original Update Synology Readme for DSM 7. =end original DSM 7 のために Synology Readme を更新しました。 =item Windows =begin original Fix win32 memory alignment needed for gcc-12 from vmem.h. =end original vmem.h からの gcc-12 のために必要な win32 メモリアライメントを 修正しました。 =begin original utimes() on Win32 would print a message to stderr if it failed to convert a supplied C to to a C. [L] =end original Win32 の utimes() は、 指定された C から C への変換に失敗したときに、 stderr にメッセージを出力していました。. [L] =begin original In some cases, timestamps returned by L and L failed to take daylight saving time into account. [L] [L] =end original 場合によっては、L と L によって返されるタイムスタンプは、 夏時間を考慮に入れるのに失敗していました。 [L] [L] =begin original stat() now works on C socket files. [L] =end original stat() は C ソケットファイルで動作するようになりました。 [L] =begin original readlink() now returns the C from a symbolic link reparse point instead of the C, which should make it better match the name the link was created with. [L] =end original readlink() は、 シンボリックリンク再パースポイントから C ではなく C を返すようになりました; これにより、リンクが作られた名前とよりよく一致するようになります。 [L] =begin original lstat() on Windows now returns the length of the link target as the size of the file, as it does on POSIX systems. [L] =end original Windows での lstat() は、POSIX システムと同様、 ファイルサイズとしてリンクターゲットの長さを返すようになりました。 [L] =begin original symlink() on Windows now replaces any C in the target with C<\>, since Windows does not recognise C in symbolic links. The reverse translation is B done by readlink(). [L] =end original Windows での symlink() は、ターゲット中の全ての C を C<\> で置き換えます; Windows はシンボリックリンク中の C を認識しないからです。 逆変換は readlink() によって B<行われません> 。 [L] =begin original symlink() where the target was an absolute path to a directory was incorrectly created as a file symbolic link. [L] =end original ディレクトリへの絶対パスがターゲットの symlink() は、 誤ってファイルのシンボリックリンクを作成していました。 [L] =begin original C no longer creates broken sockets. [L] =end original C はもはや壊れたソケットを作らなくなりました。 [L] =begin original Closing a busy pipe could cause Perl to hang. [L] =end original ビジー状態のパイプを閉じると Perl のハングアップを 引き起こすことがありました。 [L] =back =head1 Internal Changes (内部の変更) =over 4 =item * =begin original Removed many deprecated C functions. =end original 多くの廃止予定の C 関数が削除されました。 =begin original These have been deprecated for a long time. See L for a full list. =end original これらは長い間廃止予定になっていました。 完全な一覧については L を参照してください。 =item * =begin original C, C, C, C and C have been marked deprecated. =end original C, C, C, C, C は廃止予定としてマークされました。 =item * =begin original C has been marked as internal API. =end original C は内部 API としてマークされました。 =item * =begin original C, C, and C have been marked as internal API. =end original C, C, and C は 内部 API としてマークされました。 =item * =begin original New bool related functions and macros have been added to complement the new bool type introduced in 5.36: =end original 5.36 で導入された新しい真偽値型を保管するために、新しい真偽値関連の 関数とマクロが追加されました: =begin original The functions are: =end original 関数は: =over 4 =item L|perlapi/newSVbool> =item L|perlapi/newSV_true> =item L|perlapi/newSV_false> =item L|perlapi/sv_set_true> =item L|perlapi/sv_set_false> =item L|perlapi/sv_set_bool> =back =begin original The macros are: =end original マクロは: =over 4 =item L|perlapi/SvIandPOK> =item L|perlapi/SvIandPOK_off> =item L|perlapi/SvIandPOK_on> =back =item * =begin original Perl is no longer manipulating the C array directly. The variable C has been removed and C is always defined. This means XS modules can now call C and C without causing segfaults. [L] =end original Perl はもはや C 配列を直接操作しません。 C 変数は削除され、C は 常に定義されます。 つまり、XS モジュールはセグメンテーションフォルトを引き起こすことなく C と C を呼び出せるということです。 [L] =item * =begin original Internal C API functions are now hidden with C<__attribute__((hidden))> on the platforms that support it. This means they are no longer callable from XS modules on those platforms. =end original 内部 C API 関数は、対応しているプラットフォームでは C<__attribute__((hidden))> を使って隠されるようになりました。 つまり、これらはもはやこれらのプラットフォームの XS モジュールから 呼び出せないということです。 =begin original It should be noted that those functions have always been hidden on Windows. This change merely brings that to the other platforms. [L] =end original これらの関数は Windows では既に隠されていることは注意しておくべきです。 この変更は単に他のプラットフォームにも適用したものです。 [L] =item * =begin original New formatting symbols were added for printing values declared as C or C: =end original C または C で宣言された値を表示するための新しいフォーマット シンボルが追加されました: =over =item I32df -- Like %d (I32df -- %d 風) =item U32of -- Like %o (U32of -- %o 風) =item U32uf -- Like %u (U32uf -- %u 風) =item U32xf -- Like %x (U32xf -- %x 風) =item U32Xf -- Like %X (U32Xf -- %X 風) =back =begin original These are used in the same way already existing similar symbols, such as C, are used. See L. =end original これらは、C のような既存の似たようなシンボルが使われるのと 同じように使われます。 L を参照してください。 =item * =begin original new 'HvHasAUX' macro =end original 新しい 'HvHasAUX' マクロ =item * =begin original regexec.c: Add some branch predictions reorder conds =end original regexec.c: いくつかの分岐予測再順序条件の追加 =item * =begin original locale: Change macro name to be C conformant =end original locale: マクロ名を C 準拠に変更 =item * =begin original Rename the C constants to C =end original C 定数を C にリネーム =item * =begin original Changes all the API macros that retrieve a PV into a call to an inline function so as to evaluate the parameter just once. =end original 引数を 1 回だけ評価するために、PV を受け取る全ての API マクロを、 インライン関数に変更。 =item * =begin original regexec.c: multiple code refactor to make the code more readable =end original regexec.c: コードをより読みやすくするための複数のコードリファクタリング =item * =begin original perl.h: Change macro name to be C conformant (remove leading _ from NOT_IN_NUMERIC macros) =end original perl.h: マクロ名を C 準拠に変更 (NOT_IN_NUMERIC マクロから先頭の _ を除去) =item * =begin original regcomp.h: add new C macro in addition to the existing C and C ones. =end original regcomp.h: 既存の C と C に加えて C マクロを追加。 =item * =begin original Create new regnode type ANYOFH. populate_ANYOF_from_invlist was renamed to populate_bitmap_from_invlist =end original 新しい regnode 型 ANYOFH。 populate_ANYOF_from_invlist は populate_bitmap_from_invlist に リネームされました。 =item * =begin original regex: Refactor bitmap vs non-bitmap of qr/[]/ =end original regex: qr/[]/ のビットマップと非ビットマップのリファクタリング =item * =begin original regcomp.c: add new functions to convert from an inversion list to a bitmap (and vice versa) C and C. =end original regcomp.c: 転置リストからビットマップへの変換(およびその逆)のための 新しい関数 C と C を追加。 =item * =begin original Add C to create an AV from an existing AV. Add C to create an AV using keys and values from an existing HV. =end original 既存の AV から AV を作る C を追加。 既存の HV からキーと値を使って AV を作る C を追加。 =item * =begin original Fix definition of C. =end original C の定義を修正。 =item * =begin original Fix undefined behavior with overflow related C and delta in F. =end original F の C と差分に関するオーバーフローでの 未定義の振る舞いを修正。 =item * =begin original Fix regnode pointer alignment issue in F. =end original F の regnode ポインタのアライメントの問題を修正。 =item * =begin original The C CV flag and associated C macro has been renamed to C and C. This closer reflects its actual behaviour (it suppresses a warning that would otherwise be generated about ambiguous names), in order to be less confusing with C, which indicates that a CV is a C subroutine relating to the C feature. =end original C CV フラグと関連する C マクロは C と C にリネームされました。 これは、CV が C 機能の C サブルーチンであることを 示している C との混乱を減らすために、 実際の振る舞い (曖昧な名前に関して生成される警告を抑制する) を より反映するようになりました。 =item * =begin original The C flag is no longer set on the C op constructed to call the C, C and C methods as part of a C statement and attribute application, nor when assigning to an C<:lvalue> subroutine. =end original C 文の一部や属性適用として C, C, C メソッドを呼び出すように構築されたり、 C<:lvalue> サブルーチンに代入するときに、 もはや C op に C フラグを設定しなくなりました。 =item * =begin original A new CV flag C has been added, which indicates that the CV is an XSUB and stores an SV pointer in the C union field. Perl core operations such as cloning or destroying the CV will maintain the reference count of the pointed-to SV, destroying it when required. =end original CV が XSUB であることを示し、C 共用体フィールドに SV ポインタを保管する、 新しい CV フラグ C が追加されました。 CV を複製したり破壊したりするような Perl コアの操作は、 SV へのポインタの参照関数を保守し、必要なら破壊します。 =item * =begin original A new API function L> is added. This is the same as L|POSIX/localeconv> (returning a hash of the C fields), but directly callable from XS code. =end original 新しい API 関数 L> が追加されました。 これは (C フィールドのハッシュを返す) L|POSIX/localeconv> と同じですが、 XS から直接呼び出せます。 =item * =begin original A new API function, L> is added. This is the same as plain L>, but with an extra parameter that allows the caller to simply and reliably know if the returned string is UTF-8. =end original 新しい API 関数 L> が追加されました。 これは普通の L> と同じですが、 返される文字列が UTF-8 かどうかを呼び出し側が簡単かつ確実に 分かるようにするための追加の引数があります。 =item * =begin original We have introduced a limit on the number of nested C/C blocks and C/C (and thus C statements as well) to prevent C stack overflows. This variable can also be used to forbid C blocks from executing during C compilation. The limit defaults to C<1000> but can be overridden by setting the C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> variable. The default itself can be changed at compile time with =end original C スタックオーバーフローを避けるために、C/C ブロックと C/C (および C 文) のネスト数の制限を導入しました。 この変数は、C のコンパイル中に C ブロックを実行させないためにも使えます。 制限のデフォルトは C<1000> ですが、C<${^MAX_NESTED_EVAL_BEGIN_BLOCKS}> 変数を 設定することで上書きできます。 デフォルト自体は次のようにしてコンパイル時に変更できます: -Accflags='-DPERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT=12345' =begin original Note that this value relates to the size of your C stack and if you choose an inappropriately large value Perl may segfault, be conservative about what you choose. =end original この値は C スタックのサイズに関連していて、不適切に大きな値を選ぶと、 Perl はセグメンテーションフォルトすることがあるので、 選ぶ値に関しては保守的になってください。 =item * =begin original A new magic type C has been added. This is available for use like C, but is a value magic: upon localization the new value will not be magical. =end original 新しい magic 型 C が追加されました。 これは C と同様に使えますが、値の magic です: ローカル化すると新しい値はマジカルではありません。 =item * =begin original The C, C, C and C APIs now return a C value. The C and C macros now expect a C parameter, and enforce that on debugging builds. [L] =end original The C, C, C, C API は C の値を返すようになりました。 C と C マクロは C の引数を想定するようになり、 デバッグビルドではこれを強制するようになりました。 [L] =item * =begin original Filenames in cops are now refcounted under threads. Under threads we were copying the filenames into each opcode. This is because in theory opcodes created in one thread can be destroyed in another. The change adds a new struct/type C, which is a refcounted string using shared memory. This is implemented in such a way that code that previously used a char * can continue to do so, as the refcounting data is located a specific offset before the char * pointer itself. =end original cops の中のファイル名はスレッドの下で参照カウントされるようになりました。 スレッドの下では、ファイル名を個々のオペコードにコピーしていました。 これは、理論上はオペコードががあるスレッド作られたオペコードは 他のスレッドによって破壊されるかもしれないからです。 この変更は、共有メモリを使った、参照カウント付きの文字列である 新しい構造体/型 C を追加します。 これは、以前 char * を使っていたコードがそうし続けられる方法で実装されています; 参照カウントのデータは char * ポインタ自身の前の特定のオフセットに 配置されるからです。 =item * =begin original Added C and C special formats. They take an C as an argument and use C and related macros to determine the string, its length, and whether it is utf8. =end original 特殊フォーマット C と C を追加しました。 これは C を引数に取り、文字列、その長さ、および utf8 かどうかを 決定するのに C および関連するマクロを使います。 =item * =begin original The underlying C function implementing the long-deprecated L|perlapi/GIMME> macro has been marked as deprecated, so that use of the macro emits a compile-time warning. C has been documented as deprecated in favour of L|perlapi/GIMME_V> since Perl v5.6.0, but had not previously issued a warning. =end original 長い間廃止予定になっている L|perlapi/GIMME> マクロを実装している 基礎を成す C 関数は廃止予定としてマークされました; 従って、このマクロの使用はコンパイル時警告を出力します。 C は L|perlapi/GIMME_V> によって Perl v5.6.0 から廃止予定と記述されていましたが、 以前は警告を出力していませんでした。 =item * =begin original The API function L is now more efficient. =end original API 関数 L は、より効率的になりました。 =item * =begin original Added C and C for better support for working with C (reference counted string/pointer value) structures which currently are used in opcodes to share filename and warning bit data in a memory efficient manner. =end original 現在の所、メモリに効率のいい形でファイル名と警告ビットを共有するための オペコードで使われている、C (参照カウントされた文字列/ポイント値) を 使うためのよりよい対応のための C と C が 追加されました。 =item * =begin original Added C and C macros, which make it possible to create a destructor which is fired at the end of the current statement. This uses the C magic to use "free" magic to trigger an action when a variable is freed. The action can be specified as a C function or as a Perl code reference. =end original 現在の文の最後に起動されるデストラクタを作ることができるようになる C と C マクロが追加されました。 これは、変数が解放されたときに何らかの行動を引き起こすための "free" マジックを使うために C マジックを使います。 行動は C 関数または Perl コードリファレンスとして指定できます。 =item * =begin original Added the C<%{^HOOK}> api and related C and C for providing ways to hook selected perl functions which for one reason or another are problematic to wrap with a customized subroutine. =end original カスタマイズされたサブルーチンでラップするのに問題が 一つまたは複数ある、選ばれた perl 関数をフックするための提供する、 C<%{^HOOK}> API と関連する C と C が追加されました。 =item * =begin original Added support for C<${^HOOK}{require__before}> which can be used to rewrite the filename that C will try to load, and also to block C from loading a specific module, even via fully qualified filename. The hook can also be used to perform "pre-require" and "post-require" actions. =end original C が読み込もうとするファイル名を書き換えたり、 たとえ完全修飾ファイル名でも C が特定のモジュールの 読み込みをブロックするのに使える、 C<${^HOOK}{require__before}> 対応が追加されました。 このフックは、「require の前」および「require の後」の行動を 実行するためにも使われます。 =item * =begin original Added support for C<${^HOOK}{require__after}> which can be used to track what modules have been required after the fact. =end original 後でどのモジュールが require されたかを追跡するために使える C<${^HOOK}{require__after}> 対応が追加されました。 =item * =begin original Regular expression opcodes (regops) now use a standardized structure layout that uses unions to expose data in different format. This means it should be much easier to extend or modify regops to use more memory. This has been used to make a number of regops track how many parens they contain. =end original 正規表現オペコード (regops) は、異なった形式のデータを公開するために 共用体を使う標準的な構造体配置を使うようになりました。 これにより、よりメモリを使うように regops を拡張または修正するのが 遙かに容易になりました。 これは多くの regops が、いくつかっこを含んでいるかを記録するために 使われていました。 =back =head1 Selected Bug Fixes (バグ修正の抜粋) =over 4 =item * =begin original Avoid recursion and stack overflow parsing 'pack' template =end original 'pack' テンプレートのパース中に再帰とスタックオーバーフローを 起こさなくなりました [L] =item * =begin original An eval() as the last statement in a regex code block could trigger an interpreter panic; e.g. =end original 正規表現コードブロックの最後の文として eval() があると、 インタプリタの panic を引き起こすことがありました; 例: /(?{ ...; eval {....}; })/ [L] =item * =begin original Disabling the C feature no longer treats C<< print Class->method >> as an error. [L] =end original C 機能を無効にしても、もはや C<< print Class->method >> をエラーとして扱わなくなりました。 [L] =item * =begin original When a Perl subroutine tail-calls an XS subroutine using C, the XS subroutine can now correctly determine its calling context. Previously it was always reported as scalar. =end original Perl のサブルーチンが C を使って XS サブルーチンを 末尾呼び出ししたとき、XS サブルーチンはその呼び出しコンテキストを 正しく決定できるようになりました。 以前はこれは常にスカラとして報告していました。 =begin original In addition, where the Perl subroutine is freed at the same time: =end original さらに、Perl サブルーチンが同時に開放される場所では: sub foo { *foo = sub {}; goto &xs_sub } =begin original this formerly could lead to crashes if the XS subroutine tried to use the value of C, since this was being set to NULL. This is now fixed. =end original XS サブルーチンが C を使おうとしたとき、これは NULL に設定されているので、以前はクラッシュを 引き起こすことがありました。 これは修正されました。 [L] =item * =begin original setsockopt() now uses the mechanism added in 5.36 to better distinguish between numeric and string values supplied as the C parameter. [L] =end original setsockopt() は、C 引数として指定された数値と文字列値を よりよく区別するために 5.36 で追加された機構を使うようになりました。 [L] =item * =begin original 4-argument C now rejects strings with code points above 255. Additionally, for code points 128-255, this operator will now always give the corresponding octet to the OS, regardless of how Perl stores such code points in memory. (Previously Perl leaked its internal string storage to the OS.) [L] =end original 4 引数の C は、255 を超える符号位置を持つ文字列を 拒否するようになりました。 さらに、符号位置 128-255 については、Perl がこの符号位置をどのように メモリに保管しているかに関わらず、常に対応するオクテットを OS に 渡すようになりました。 (以前は Perl はその内部文字列ストレージを OS にリークしていました。) [L] =item * =begin original Fix panic issue from C [L] =end original C からの panic 問題を修正しました。 [L] =item * =begin original Fix multiple compiler warnings from F, F [L] =end original regexp.c., locale.c からの複数のコンパイラ警告を修正しました。 [L] =item * =begin original Fix a bug with querying locales on platforms that don't have C [L] =end original C を持っていないプラットフォームでのロケール問い合わせのバグを 修正しました。 [L] =item * =begin original Prevent undefined behaviour in C. =end original C での未定義の振る舞いを抑制しました。 =item * =begin original Avoid signed integer overflow in C ops. =end original C op での符号付き整数オーバーフローを起きないようにしました。 =item * =begin original Avoid adding an offset to a NULL pointer in C. =end original C で NULL ポインタへのオフセットを 追加しないようにしました。 =item * =begin original PerlIO::get_layers will now accept IO references too =end original PerlIO::get_layers は IO リファレンスも受け取るようになりました =begin original Previously it would only take glob references or names of globs. Now it will also accept IO references. =end original 以前はグロブリファレンスかグロブの名前だけを取っていました。 これは IO リファレンスも取るようになりました。 =item * =begin original Fixes to memory handling for C: =end original C のメモリの扱いを修正しました: =over =item * =begin original If a thread was created the allocated string would be freed twice. =end original スレッドが作られたとき、割り当てられた文字列が 2 回解放されていました。 =item * =begin original If two C<-F> switches were supplied the memory allocated for the first switch wouldn't be freed. =end original 二つの C<-F> オプションが指定されたとき、最初のオプションのために 割り当てられたメモリが解放されていませんでした。 =back =item * =begin original Correctly handle C ops generated by CPAN modules that don't include the OPf_REF flag when propagating lvalue context. [L] =end original 左辺値を代入するとき、OPf_REF フラグを含まない CPAN モジュールによって 生成された C op を正しく扱えるようになりました。 [L] =item * =begin original L now uses the C locale category to specify its collation, ignoring any differing C. It doesn't make sense for a string to be encoded in one locale (say, ISO-8859-6, Arabic) and to collate it based on another (like ISO-8859-7, Greek). Perl assumes that the current C locale correctly represents the encoding, and collates accordingly. =end original L は、照合を指定するのに C の違いを無視して、 C ロケールカテゴリを使うようになりました。 あるロケール (例えばアラビア語の ISO-8859-6) でエンコードされている 文字列を、(ギリシャ語の ISO-8859-7 のような)他のロケールを基にして 照合するのは意味がありません。 Perl は現在の C ロケールカテゴリがエンコーディングおよび、 それに応じた照合順序を正しく表現していることを仮定します。 =begin original Also, embedded C characters are now allowed in the input. =end original また、埋め込みの C 文字が入力に許されるようになりました。 =begin original If locale collation is not enabled on the platform (C), the input is returned unchanged. =end original ロケール照合がプラットフォームで有効になっていない場合、(C)、 入力は変更されずに戻されます。 =item * =begin original Double FETCH during stringification of tied scalars returning an overloaded object have been fixed. The FETCH method should only be called once, but prior to this release was actually called twice. [L] =end original オーバーロードされたオブジェクトを返す tie されたスカラの 文字列化の間に FETCH が 2 回行われる問題が修正されました。 FETCH メソッドは 1 回だけ呼び出されるべきでしたが、 このリリースの前では実際には 2 回呼び出されていました。 [L] =item * =begin original Writing to a magic variables associated with the selected output handle, C<$^>, C<$~>, C<$=>, C<$-> and C<$%>, no longer crashes perl if the IO object has been cleared from the selected output handle. [L] =end original 選択された出力ハンドルに関連するマジカル変数 C<$^>, C<$~>, C<$=>, C<$->, C<$%> に書き込むとき、 IO オブジェクトが選択した出力ハンドルからクリアされていても perl がクラッシュしなくなりました。 [L] =item * =begin original Redefining a C list constant with C now properly warns. This changes the behaviour of C but is a core change, not a change to F. [L] =end original C で C リスト定数を再定義すると 適切に警告されるようになりました。 この変更は C の振る舞いの変更ですが、 F の変更ではなくコアの変更です。 [L] =item * =begin original Redefining a C list constant with an empty prototype constant sub would result in an assertion failure. [L] =end original 空のプロトタイプ定数サブルーチンを持つ C リスト定数を再定義すると、 アサート失敗を引き起こしていました。 [L] =item * =begin original Fixed a regression where the C method for objects in C<@INC> would not be resolved by C, while it was in 5.36. The C method for objects in C<@INC> cannot be resolved by C as C would have been resolved first. [L] =end original C<@INC> の中のオブジェクトのための C メソッドが C によって解決されないという 5.36 にあった退行が 修正されました。 C が最初に解決されるので、C<@INC> の中のオブジェクトのための C メソッドは C によって解決できません。 [L] =item * =begin original C<$SIG{__DIE__}> will now be called from eval when the code dies during compilation regardless of how it dies. This means that code expecting to be able to upgrade C<$@> into an object will be called consistently. In earlier versions of perl C<$SIG{__DIE__}> would not be called for certain compilation errors, for instance undeclared variables. For other errors it might be called if there were more than a certain number of errors, but not if there were less. Now you can expect that it will be called in every case. =end original C<$SIG{__DIE__}> は、どのように die したかに関わらず、 コンパイル中にコードが die したとき、eval から 呼び出されるようになりました。 つまり、C<$@> をオブジェクトに昇格できることを想定しているコードは 一貫して呼び出されるということです。 以前のバージョンの perl では、未定義変数のような一部の コンパイルエラーでは <$SIG{__DIE__}> は呼び出されませんでした。 その他のエラーでは、ある程度の数以上のエラーがある場合は 呼び出されることがありましたが、それ以下では呼び出されませんでした。 全ての場合において呼び出されることが想定できるようになりました。 =item * =begin original Compilation of code with errors used to inconsistently stop depending on the count and type of errors encountered. The intent was that after 10 errors compilation would halt, but bugs in this logic meant that certain types of error would be counted, but would not trigger the threshold check to stop compilation. Other errors would. With this release after at most 10 errors compilation will terminate, regardless of what type of error they were. =end original エラーのあるコードのコンパイルは、遭遇したエラーの数と種類に依存して 一貫性なく停止していました。 10 エラーの後コンパイルが停止するという意図でしたが、 このロジックのバグにより、一部の種類のエラーはカウントはされますが、 コンパイルを停止するための閾値チェックを引き起こしていませんでした。 その他のバグは引き起こしていました。 このリリースでは、エラーの種類にかかわらず、最大 10 のエラーの後 コンパイルは終了します。 =begin original Note that you can change the maximum count by defining C to be something else during the configuration process. For instance =end original 設定プロセス中に C に値を定義することで 最大値を変更できることに注意してください。 例えば: ./Configure ... -Accflags='-DPERL_STOP_PARSING_AFTER_N_ERRORS=100' =begin original would allow up to 100 errors. =end original これは最大 100 エラーまでを許します。 =item * =begin original The API function L now prints a non-dot decimal point if the perl code it ultimately is called from is in the scope of C and the locale in effect calls for that. =end original API 関数 L は、 これを最終的に呼び出した perl コードが C の スコープ内で、有効なロケールが求めている場合、 ドットでない小数点を表示するようになりました。 =item * =begin original A number of bugs related to capture groups in quantified groups in regular expression have been fixed, especially in alternations. For example in a pattern like: =end original 正規表現中の量指定グループ中の捕捉グループに関する多くのバグが 修正されました; 特に代替です。 例えば、次のようなパターンは: "foobazfoobar" =~ /((foo)baz|foo(bar))+/ =begin original the regex variable C<$2> will not be "foo" as it once was, it will be undef. =end original 正規表現変数 C<$2> は以前の "foo" ではなく、未定義値になります。 =item * =begin original Bugs with regex backreference operators that are inside of a capture group have been fixed. For instance: =end original 捕捉グループの中にある正規表現後方参照演算子のバグが修正されました。 例えば: "xa=xaaa" =~ /^(xa|=?\1a){2}\z/ =begin original will now correctly not match. [L] =end original これはマッチングしないという正しい動作になりました。 [L] =item * =begin original C and C have been reworked to ensure that the requested space is actually allocated. C is now an alias for C. =end original C と C は、 要求された空間が確実に割り当てられるように再作業されました。 C は C の別名になりました。 =back =head1 Acknowledgements (謝辞) =begin original Perl 5.38.0 represents approximately 12 months of development since Perl 5.36.0 and contains approximately 290,000 lines of changes across 1,500 files from 100 authors. =end original Perl 5.38.0 は、Perl 5.36.0 以降、100 人の作者によって、 1,500 のファイルに約 290,000 行の変更を加えて、 約 12 ヶ月開発されてきました。 =begin original Excluding auto-generated files, documentation and release tools, there were approximately 190,000 lines of changes to 970 .pm, .t, .c and .h files. =end original 自動生成ファイル、文書、リリースツールを除くと、970 の .pm, .t, .c, .h ファイルに約 190,000 行の変更を加えました。 =begin original Perl continues to flourish into its fourth decade thanks to a vibrant community of users and developers. The following people are known to have contributed the improvements that became Perl 5.38.0: =end original Perl は、活気のあるユーザーと開発者のコミュニティのおかげで 30 年を超えて 繁栄しています。 以下の人々が、Perl 5.38.0 になるための改良に貢献したことが分かっています: Alex, Alexander Nikolov, Alex Davies, Andreas König, Andrew Fresh, Andrew Ruthven, Andy Lester, Aristotle Pagaltzis, Arne Johannessen, A. Sinan Unur, Bartosz Jarzyna, Bart Van Assche, Benjamin Smith, Bram, Branislav Zahradník, Brian Greenfield, Bruce Gray, Chad Granum, Chris 'BinGOs' Williams, chromatic, Clemens Wasser, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Book, danielnachun, Dan Jacobson, Dan Kogai, David Cantrell, David Golden, David Mitchell, E. Choroba, Ed J, Ed Sabol, Elvin Aslanov, Eric Herman, Felipe Gasper, Ferenc Erki, Firas Khalil Khana, Florian Weimer, Graham Knop, Håkon Hægland, Harald Jörg, H.Merijn Brand, Hugo van der Sanden, James E Keenan, James Raspass, jkahrman, Joe McMahon, Johan Vromans, Jonathan Stowe, Jon Gentle, Karen Etheridge, Karl Williamson, Kenichi Ishigaki, Kenneth Ölwing, Kurt Fitzner, Leon Timmermans, Li Linjie, Loren Merritt, Lukas Mai, Marcel Telka, Mark Jason Dominus, Mark Shelor, Matthew Horsfall, Matthew O. Persico, Mattia Barbon, Max Maischein, Mohammad S Anwar, Nathan Mills, Neil Bowers, Nicholas Clark, Nicolas Mendoza, Nicolas R, Paul Evans, Paul Marquess, Peter John Acklam, Peter Levine, Philippe Bruhat (BooK), Reini Urban, Renee Baecker, Ricardo Signes, Richard Leach, Russ Allbery, Scott Baker, Sevan Janiyan, Sidney Markowitz, Sisyphus, Steve Hay, TAKAI Kousuke, Todd Rinaldo, Tomasz Konojacki, Tom Stellard, Tony Cook, Tsuyoshi Watanabe, Unicode Consortium, vsfos, Yves Orton, Zakariyya Mughal, Zefram, 小鸡. =begin original The list above is almost certainly incomplete as it is automatically generated from version control history. In particular, it does not include the names of the (very much appreciated) contributors who reported issues to the Perl bug tracker. =end original これはバージョンコントロール履歴から自動的に生成しているので、ほぼ確実に 不完全です。 特に、Perl バグトラッカーに問題を報告をしてくれた (とてもありがたい)貢献者の 名前を含んでいません。 =begin original Many of the changes included in this version originated in the CPAN modules included in Perl's core. We're grateful to the entire CPAN community for helping Perl to flourish. =end original このバージョンに含まれている変更の多くは、Perl コアに含まれている CPAN モジュール由来のものです。 私たちは Perl の発展を助けている CPAN コミュニティ全体に感謝します。 =begin original For a more complete list of all of Perl's historical contributors, please see the F file in the Perl source distribution. =end original 全ての Perl の歴史的な貢献者のより完全な一覧については、どうか Perl ソース 配布に含まれている F を参照してください。 =head1 Reporting Bugs (バグ報告) =begin original If you find what you think is a bug, you might check the perl bug database at L. There may also be information at L, the Perl Home Page. =end original もしバグと思われるものを見つけたら、 L にある perl バグデータベースを 確認してください。 Perl ホームページ、L にも情報があります。 =begin original If you believe you have an unreported bug, please open an issue at L. Be sure to trim your bug down to a tiny but sufficient test case. =end original もしまだ報告されていないバグだと確信したら、 L にイシューを登録してください。 バグの再現スクリプトを十分小さく、しかし有効なコードに切りつめることを 意識してください。 =begin original If the bug you are reporting has security implications which make it inappropriate to send to a public issue tracker, then see L for details of how to report the issue. =end original 報告しようとしているバグがセキュリティに関するもので、公開されている イシュートラッカーに送るのが不適切なものなら、バグの報告方法の詳細について L を参照してください。 =head1 Give Thanks (感謝を伝える) =begin original If you wish to thank the Perl 5 Porters for the work we had done in Perl 5, you can do so by running the C program: =end original もし Perl 5 でなされた作業について Perl 5 Porters に感謝したいと考えたなら、 C プログラムを実行することでそうできます: perlthanks =begin original This will send an email to the Perl 5 Porters list with your show of thanks. =end original これは Perl 5 Porters メーリングリストにあなたの感謝の言葉をメールします。 =head1 SEE ALSO =begin original The F file for an explanation of how to view exhaustive details on what changed. =end original 変更点の完全な詳細を見る方法については F ファイル。 =begin original The F file for how to build Perl. =end original Perl のビルド方法については F ファイル。 =begin original The F file for general stuff. =end original 一般的なことについては F ファイル。 =begin original The F and F files for copyright information. =end original 著作権情報については F 及び F ファイル。 =cut =begin meta Translate: SHIRAKATA Kentaro Status: in progress =end meta