パスワードを忘れた? アカウント作成
12543620 story
BSD

NetBSD 7.0リリース 52

ストーリー by headless
最新 部門より
KAMUI 曰く、

NetBSDの最新版で、15回目のメジャーリリースとなるNetBSD 7.0がリリースされている(アナウンスOSDN Magazineの記事マイナビニュースの記事)。

目立つ機能追加としてはLuaカーネルスクリプティング機能によるカーネルモジュール開発や、sshなどネットワークデーモンに対して動的に侵入から保護するblacklistdの追加。利用者が直接触れる部分としてはLinux 3.15からポートされたDRM/KMSの導入によってx86システム上でIntel/Radeonでの描画が高速化されている。また、ARMについてはRaspberry Pi 2など各種ARMボードへのサポート追加、マルチプロセッサ対応などが挙げられる。その他の詳細は上記アナウンスを参照されたい。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2015年10月11日 15時02分 (#2897891)

    そんなにいいの?

    • by Anonymous Coward on 2015年10月11日 15時31分 (#2897900)

      良い悪いではなく、フットプリントが小さいのと全てCで書かれているので、このような組み込み用途に
      ぴったりなんです。

      親コメント
    • by Anonymous Coward

      JITが超優秀で実行速度がむちゃくちゃ速いって聞くけど使ったことはないので伝聞止まり

    • by Anonymous Coward

      例えば、1から1000000000までの合計を求める

      luajit -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'

      このコードが、3770Kでも1秒以下で計算されちゃうとそりゃね。
      LuaJITじゃなくて、素のLuaの方ですら8秒とかだもの。
      C/C++のようなネイティブはともかく、JavaやGo、すごいよHaskellですら単純計算では相手になりませんわ。

      ちな、クソ遅いことで有名なRubyで同じことやってみ?
      どう書いても3分とかかかるよwww

      • by Anonymous Coward on 2015年10月12日 7時33分 (#2898085)

        pythonで同じ事をやってみようといつものように何も考えずに
        for i in range(1000000000):
        とやってまず無事に死亡
        リスト返すんだからそうなるわなとwhileに書き直して
        $ time python a.py
        500000000500000000

        real 4m24.534s

        みんな大好きpypyだと
        $ time pypy a.py
        500000000500000000

        real 0m3.112s

        luaと同じ条件にするために浮動小数点で
        $ time pypy a.py
        5.00000000067e+17

        real 0m7.909s

        参考までに同じ環境で
        $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
        5.0000000006711e+17

        real 0m12.698s

        $ time luajit -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
        5.0000000006711e+17

        real 0m1.091s

        Luaはやいですね

        親コメント
        • by Anonymous Coward on 2015年10月12日 11時18分 (#2898112)

          追加
          言われるほどruby遅くなかった

          $ time ruby a.ruby
          500000000500000000
          real 0m36.841s
          user 0m36.351s
          sys 0m0.189s

          $ ruby -v
          ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]

          親コメント
      • by Anonymous Coward on 2015年10月11日 19時42分 (#2897960)

        手元の lua でやってみた。(3770Kじゃないけど)
        $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
        500000000500000000
        lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)' 30.09s user 0.02s system 99% cpu 30.207 total
        $ lua -v
        Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio

        親コメント
        • by Anonymous Coward on 2015年10月11日 21時20分 (#2897986)

          えーそんなに遅くなるのかあと思ってうちの Celeron 1037U 1.8GHzで試してみた。
          lua-5.3.1 を MinGW-W64-builds-4.2.0 でビルド後、

          $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
          500000000500000000

          real 0m18.358s
          user 0m0.000s
          sys 0m0.015s

          まあ、こんなもんか。

          親コメント
          • by Anonymous Coward on 2015年10月12日 1時06分 (#2898029)

            古いラップトップでこれだから最近のデスクトップなら8秒は余裕で切るだろうね
            Ubuntu 15.04
            Intel(R) Core(TM)2 Duo CPU P8800 @ 2.66GHz
            $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
            5.0000000006711e+17

            real 0m12.058s
            user 0m12.026s
            sys 0m0.000s

            親コメント
            • by Anonymous Coward on 2015年10月12日 23時31分 (#2898429)

              Debian GNU/Linux 8
              Intel(R) Core(TM) i3-2120T CPU @ 2.60GHz

              $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
              5.0000000006711e+17

              real 0m14.021s
              user 0m14.020s
              sys 0m0.000s

              Core2Duoに負けてる…

              親コメント
              • >Core2Duoに負けてる…

                そう決め付ける物でもない。

                CYGWIN_NT-6.0 mamiko 1.7.28(0.271/5/3) 2014-02-09 21:06 i686 Cygwin
                Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz 2.50GHz

                $ lua -v
                Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio

                $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
                5.0000000006711e+17

                real 0m29.656s
                user 0m27.986s
                sys 0m0.265s

                $

                ほらちゃんとわたしの環境より性能で勝っている。

                親コメント
          • by Anonymous Coward

            Cygwin上のLuaJITとLuaで確認してみたが何でか結果が違う。
            $ luajit -v
            LuaJIT 2.0.4 -- Copyright (C) 2005-2015 Mike Pall. http://luajit.org/ [luajit.org]

            $ time luajit -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
            5.0000000006711e+17

            real 0m1.982s
            user 0m1.513s
            sys 0m0.015s

            $ lua -v
            Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio

            $ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
            5.0000000006711e+17

            real 0m22.038s
            user 0m19.312s
            sys 0m0.046s

            $

            Luaは知らんが (1+1e9)/2*1e9 = 5.000000005e17 になると思

            • by Anonymous Coward

              < と > 逆にしてたわ。

                                  1 #include <stdio.h>
                                  2 main()
                                  3 {
                                  4 double x = 0;
                                  5 double i;
                           

            • by Anonymous Coward

              > 浮動小数点演算で丸めが発生する値の範囲ではないと思うんだが

              訂正:
              5.000000005e17なら2進数で59bit要るからIEEE 754の倍精度では足らんな。

            • by Anonymous Coward

              別ツリーに書いてたけどLua 5.3は64bit整数を導入したからでしょ。しかも1e9とか書く(丸めの可能性を気にもかけない)アホでも正しく計算できるように自動的に適切な内部型を選んでいるようだ(実行結果を見る限り)。むしろGCCでなんで誤差が出ないのか謎だ

              • by Anonymous Coward

                むしろGCCでなんで誤差が出ないのか謎だ

                x87が80bitだからだろ。

              • by Anonymous Coward

                x86でもdoubleは64bitでlong doubleでないと80bitにはならなかったと思うが。最適化の結果最終段の出力以外は全部レジスタ上で行われるので80bitの精度が得られてしまうってこと?

              • by Anonymous Coward on 2015年10月12日 9時12分 (#2898099)

                最適化の結果最終段の出力以外は全部レジスタ上で行われるので80bitの精度が得られてしまうってこと?

                x87使えばそうなるよ。

                親コメント
              • by Anonymous Coward

                gcc -S -mno-sse2で出力眺めると確かにそうなっていた。なるほど

              • by Anonymous Coward on 2015年10月12日 15時17分 (#2898188)

                ちなみに変数を整数にしたら500000000500000000を即値でprintfに渡すだけのコードになった。浮動小数点数だと分配法則が成り立たないからこの手の最適化ができないわけだな(そのわりに精度が途中だけ80bitになってもいいというのがよくわからんが)。

                親コメント
              • by Anonymous Coward

                そのわりに精度が途中だけ80bitになってもいいというのがよくわからんが

                浮動小数点演算は概算であること理解してないとわからんかもね

              • by Anonymous Coward

                概算でいいと適当に精度を勝手に変えてもいいの違いが理解できない奴には質問の意味すらわからんだろうね

              • by Anonymous Coward

                概算であるというのは人間による演算結果の評価にすぎず、浮動小数点演算の結果はIEEE754やIntelのマニュアルで厳密に定められているのだが

              • by Anonymous Coward

                「厳密に定められてる」って、浮動小数点演算の丸めのルールすら理解してないっぽいね。

              • by Anonymous Coward

                浮動小数点演算の結果はIEEE754やIntelのマニュアルで厳密に定められているのだが

                なるほど、じゃあWikipediaのIEEE 754の項目に書かれてる
                https://ja.wikipedia.org/wiki/IEEE_754 [wikipedia.org]

                算術その他の演算で使用される形式は、符号化したときのものと一致していなくても構わない(つまり、実装は、内部で異なる表現を使用してもよい)。
                この標準では、精度(有効桁数)を拡張した形式を示し、基本形式よりも精度を高くすることを

              • by Anonymous Coward

                モードがいっぱいあるのと、あるモードの動作が厳密に定められているのは別の話じゃないかなあ。

                実数演算と浮動小数点演算は違うというのは当たり前ですが、
                浮動小数点演算結果と浮動小数点演算結果が異なるのは当たり前じゃないです。
                必ず理由があります。
                IEEE754は無限精度で演算して、結果を格納する時に丸めます。
                モードとかが一致していれば変わるわけがないです。
                言うまでもありませんが、丸め方法は決まっています。1つじゃないですが。

                ただし真面目に考えてないコンパイラとかが多いのはその通り。
                IEEE754はfloat, double変数に代入されるビットパターンの意味だと
                思うくらいの方が安全だね。
                昔はCとかでそんなこと追求する人はいなかった、かな? Fortran使えと。

              • by Anonymous Coward

                「浮動小数点演算の結果はIEEE754やIntelのマニュアルで厳密に定められているのだが」の意味分かってない人?

      • by Anonymous Coward

        ループ処理に浮動小数点演算使う馬鹿の言うことは話半分にしか聞けないな。

        • by Anonymous Coward on 2015年10月11日 17時18分 (#2897930)

          luaには整数型がなく、整数もfloatとして書く必要があります。
          そういう言語なので、 for i=1,1e9 というのは、全く悪い書き方ではありませんよ。

          親コメント
          • by Anonymous Coward on 2015年10月11日 17時42分 (#2897937)

            本題から離れますが、Luaは5.3で整数型が追加されました。
            パフォーマンスの問題だろうか?

            親コメント
            • by Anonymous Coward on 2015年10月11日 18時29分 (#2897948)

              Robertoが何を考えて整数型を追加したのかは定かではないけど、64bit整数の範囲をdoubleでは表しきれなかったので、doubleしかないのは用途によっては微妙に不便だったのよね。パフォーマンスの面も含めて、いろんな整数型拡張が作られていた(Luaは仕様もコードも小さい分、拡張するのは簡単)から、公式としてまとめておく必要があると思ったのかな。

              親コメント
            • by Anonymous Coward

              整数もってないLuaが持ってる言語を整数演算ベンチマークでぶち抜いたので
              演算以外の部分にボトルネックがあることが晒されてしまったのさ。

              • by Anonymous Coward

                やっぱり#2897906はいまだにregisterキーワードとか使ってそうな老害だったのか

              • by Anonymous Coward

                知ってるか(#2897963)、次のC++ではregisterキーワードが再利用されるんだぜ

              • by Anonymous Coward

                知ってるか(#2897963)、次のC++ではregisterキーワードが再利用されるんだぜ

                'register' は 2011 から deprecated & reserved で、予約語から外すという最近の提案は却下されたはず。
                次の 2017 では廃止(予約語からは外さず)の提案も出ているようです。

                確かに将来'register'は復活するかもしれませんが、
                "次のC++では"云々というのは間違っていると思います。

          • by Anonymous Coward

            luaには整数型がなく、

            なんか古い話してんね。

          • by Anonymous Coward

            luaには整数型がなく、整数もfloatとして書く必要があります。
            そういう言語なので、 for i=1,1e9 というのは、全く悪い書き方ではありませんよ。

            実装==仕様 な言語について何言ってんだかw

      • by Anonymous Coward

        1000000000(1G)回の繰り返し加算が3~4GHzのプロセッサで1秒以下ってJITならまあそんなもんだろう。

      • by Anonymous Coward

        luaは速いというか軽いんだよね

      • by Anonymous Coward

        Pen4 2.4GHzのLinux
        ruby 2.2.3p173 (2015-08-18 revision 51636) [i686-linux]
        でやってみたら108秒だったよ
        Luaだと88秒だったので確かに速い
        3分かかるようにするにはどうしたらいいのか教えて欲しい。

      • by Anonymous Coward

        その処理は公式を使えば一瞬で終わりますな。

        • by Anonymous Coward

          gccは整数の場合は回帰式を変換して一瞬で終わらせる
          オーバーフローも考慮する

          浮動小数点の場合は知らない

          • by Anonymous Coward

            浮動小数点の場合、gcc -Sで出力したソースを見る限りではx87でもSSE2でもそういう最適化は行われなかった。
            これは別に最適化が劣っているとか手抜きだとか言うわけではなくて、結合法則すら成り立たない浮動小数点数だとたいていの公式は素直に適用できない("as-if"ルールを満たせない)ので、一見公式適用すれば一瞬で求められそうでも既定でそういう最適化はされない。もっとも結果が変わってもいから最適化を指示するオプションもあったと思う。

  • by Anonymous Coward on 2015年10月11日 16時17分 (#2897912)

    hostapdがrunとの組み合わせで動かないみたい。
    俺も含めて誰もsend-prしていないので、アップグレードしようと考えているやつは注意ね。

    • by Anonymous Coward

      runって、Host APって使えたっけ。manみる限り、使えなさそうなんだけど。

      • by Anonymous Coward

        NetBSD 7.0_BETA(2015年1月頃)ではrunで使えてますよ。
        B社の1000円のアダプターでAPが作れるので、愛用しています。

  • by Anonymous Coward on 2015年10月11日 17時12分 (#2897929)

    楽天のコボちゃんに対応したのかな?
    持っている人、レポートよろしく。

  • by Anonymous Coward on 2015年10月11日 20時44分 (#2897980)

    FreeBSDには移植されてるのにNetBSDでは動かないってのはどういう理由なのだろう。
    そんなに独特なOSの機能使ってるんだろうか。

    • by Anonymous Coward

      本当のことはわかりませんが、i386とamd64でしか動かないから、とか?

typodupeerror

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

読み込み中...