パスワードを忘れた? アカウント作成
14223112 story
プログラミング

Perl 7が発表される。実質的にはPerl 5系のリネーム 43

ストーリー by hylom
現代における素人にはオススメできない言語 部門より

Perl Foundationが運営するPerlの情報サイトPerl.comで、Perlの時期メジャーバージョンである「Perl 7」が発表された

Perl 5系の最新安定版は5.32系だが、これをベースにいくつかのデフォルト設定を変更したものがPerl 7としての最初のリリースになる予定。

すでにPerl 5系に続くPerl 6系は2016年にリリース済みだが、その後Perl 6系は「Raku」という名称に名前が変更されている。Perl 5系とPerl 6系とでは互換性はなく、Perl 6が「Raku」となったのはそのことも理由の1つとなっている。

今回のPerl 7はPerl 5系の後継という位置付けで、Perl 5系との互換性が保証されている。いくつかのデフォルト仕様は変更されるが、プラグマで指定することで旧バージョンと同様の挙動にすることも可能だ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by minet (45149) on 2020年06月26日 17時16分 (#3841161) 日記

    せっかくスラドにはPerlトピック [srad.jp]があるのに仲間はずれなんて

  • 正当な進化 (スコア:2, 興味深い)

    by Anonymous Coward on 2020年06月26日 21時33分 (#3841296)

    Perlに限らず古い言語のアドバンテージは「変わらないこと」なので6のような過ちをしてはいけなかった。
    特にPerlなんて世間話するのと同じ感覚でワンライナー書くような奴ばかりなので、大阪人が「明日から津軽弁で会話しろ」って言われるようなもんだ。

    ってか、そもそもPerlが最も影響を受けた&現生言語の中で最も多くの人々に(いろんな意味で)愛されているCやシェル言語だって過去のコードが完全に動かなくなるような仕様変更はしてない。

    • by Anonymous Coward

      つまり、dankogaiの予言(Perl6はだめ)は正しかった、というわけですね。

      • by Anonymous Coward

        dankogaiもPerl6を激推していた時期(黒歴史)があったけどね。さすがに無理があった

    • by Anonymous Coward

      えぇ…>Python

      • by Anonymous Coward

        PythonはAI用言語なので。

        Python自体が評価されているわけではないと思う。
        長らく低迷してたし、昔Python勉強してましたって人には理解できない世界になってるし。

      • by Anonymous Coward

        pythonは長いこと変わってませんよ。
        その証拠にpythonってコマンドをLinuxのディストリで実行したらpython2がちゃんと起動しますよ。
        """
        pythonに関してというかパッケージ管理システムをもってる言語に関して言えば言語として提供しているライブラリと言語の標準に含まれないライブラリがごっちゃになってるのが良くない。
        まあprintを教えれば関数をおしえたことになるという普通の言語の常識がPythonで通じるようになったのは良いことだ。
        """

    • by Anonymous Coward

      これ。
      Linux 等も kernel だけ見れば極めて安定している。

      Python はそもそもメジャーはおろかマイナーバージョン間の互換性の問題で破綻している。
      ユーザが破綻しないように毎回調整してるだけ。これはユーザ数が多いからできるだけであって普通じゃない。

      • by Anonymous Coward

        > Linux 等も kernel だけ見れば極めて安定している。

        MicrosoftがWindows Updateで配信してもいいと思うくらいにね。Linuxのuserlandは借り物だから、カーネルの都合で変えるわけには行かないので、カーネルを変えたことでuserlandの互換性に問題が生じたら100%カーネルが悪いというポリシーを徹底している

  • by Anonymous Coward on 2020年06月26日 20時01分 (#3841259)

    Perl使う時ってちょっとしたリネーム作業とか、LAN内程度のCGIとか、バージョンを意識する程使ってないなぁ。
    テキストエディタで作業するから新機能が追加されてもサジェストされて気付くとかもないし。
    やっぱりバージョンの違いは認識しておいた方が良いのかなぁ?

    • by Anonymous Coward on 2020年06月26日 23時28分 (#3841347)

      requireやuseのデフォルト参照先から、'./'(カレントディレクトリ)を外す、という変更は打撃が大きかった。
      自身のライブラリをモジュール化して、カレントにぶら下げていたため、動かないスクリプトが多数発生...

      親コメント
    • by Anonymous Coward

      「Perl6の互換性」について特に知らないのなら別に何も気にしなくていい

    • by Anonymous Coward

      4系と5系の違いとか、5.8前後の違いくらいじぇね?

      # utf8がまともに動くようになったのは5.8であってたよね??

  • by Anonymous Coward on 2020年06月26日 23時30分 (#3841348)

    新しい話題が何もないんだからそっとしておいてやんなよ・・・

    正直バージョンを上げる必要すらもうないのでは

    • by Anonymous Coward

      6系の存在はセキュリティフィックスのノリで最新版突っ込むと
      今まで動いてた大量のコードが爆死するっていうバグみたいなものなので、
      旧Verの系列を最新の番号振ってバージョンを上げる事には大いに意義がある。

      6についてバージョン上げる必要、もとい作る必要がなかったって意味ならその通りだと思う。
      今回のストーリーのはその尻拭いの話。

  • by Anonymous Coward on 2020年06月27日 1時14分 (#3841381)

    日本語対応に関してencoding周りの右往左往はきつかった
    5.6系のころ、5.8.22ぐらいまで、~5.30あたりで互換性のない変更がかかる
    encodingのフィルタ指定が消えたのは痛かった

    ようやく安定してきたが、まだおまじないが冗長なのでまだ変更がかかるんだろうな
    7系はどうなのさ、と思ったら短くなる方向でまた変わるみたいに書いてあった:-)

    # 悪いのはあいつ

    Perlも使うけど、シビアな日本語対応のためにRubyも覚えた。Perl6の代わりでもある。

    • by Anonymous Coward

      Perl 5.8 が当たり前の環境で、 open() で読み書きするには PerlIO を使って 2 番目の引数で :encoding() を指定したり、
      標準入出力については binmode() で同様のことをしたりする程度で、特に Encode モジュールを明示的に使うこともなく Unicode 文字を扱えていたのですが、
      際どいことをしようとすると何か問題があったのでしょうか。

      同じ問題を踏んだときに困らないよう、
      > 5.8.22ぐらいまで
      > ~5.30あたり
      の非互換を共有いただけますか?

      • by Anonymous Coward

        openに引数を追加するのではなくencodingのフィルタでcp932にしてソースが
        cp932でもよいようにするというのが途中で消えたということです。

        まあ日本語のWindowsだけの話ですが、これによってcp932で書いてあった文字コードを
        utf-8に変えなきゃならなくなってdiffが悲惨な事に。
        文字コードがutf-8な環境ではこのような問題はないでしょう。

        use utf8だけで済むなら簡単だが、
        そのあと
        use open ':encoding(console_out)';
        use Encode::Locale;
        binmode STDIN, ":encoding(console_in)";
        binmode STDOUT, ":encoding(console_out)";
        binmode STDERR, ":encoding(console_out)";

    • by Anonymous Coward

      Perlは正規表現が言語処理系に含まれている類まれな設計で、JPerlの場合は日本語が処理できる。それにひきかえ、モダンパールのほうはというと...。

typodupeerror

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

読み込み中...