kubo39's blog

ただの雑記です。

Rustのlockとスコープのはなし

こういうコードを書くと当然deadlockする。 use std::sync::{Mutex, Arc}; use std::thread; fn main() { let mut lock = Arc::new(Mutex::new(false)); let mut cloned_lock = lock.clone(); let th = thread::spawn(move|| { loop { let mut quit = cloned…

D言語のfizzbuzz

FizzBuzzでD言語っぽいコードってどんな感じだろう、みたいな話があったので。 ふつうに実行時に書くならこんな感じだろうか。 import std.algorithm; import std.conv : to; import std.range; import std.stdio; void main() { 1.iota(16) .map!(a => (! (…

Dconf 2017

1日目 Pointers Gone Wild: Memory Safety and D Dの作者ことうぉるたん。コンパイラの恩恵を受けるために生ポインタを使うよりref使おうとか、return refやscope refとか追加した理由とか。スライドにD言語くんがいっぱい登場していた。 D as a Better C 基…

LDCの最適化とか

http://robert.ocallahan.org/2017/04/rust-optimizations-that-c-cant-do_5.html これを読んで、なるほどRustだとこういう最適化できるのね、というのを学んだ。 Here it’s really clear that the semantics of Rust are making this optimization possible…

STM32F3DISCOVERYをD言語から動かすライブラリを書いている

https://github.com/kubo39/stm32f3discovery で開発中です。LDC前提。とりあえずのLチカと例外のハンドリングとかくらいしかない。 Lチカのプログラムはこんな感じの抽象度で書けます。 import stm32f3discovery; import led; extern(C): @nogc: nothrow: v…

STM32F3DISCOVERYでD言語のプログラムを実行する

LDCコンパイラでSTM32F3DISCOVERYで動く実行バイナリをいろいろ苦労して作成した。 いろいろ罠 LDCのオプションは罠だらけ march,mcpuの指定が罠 float ABIの指定でhardが効かない、soft ABIとなる tripleの指定が罠 eabihfだとsoft-float ABIになってしまう…

LDCでSTM32F103のバイナリを作ろうとしてできなかった

Cortex-M3な環境を試してみる。 コードを以下のようなかんじで用意する。 import ldc.attributes; extern(C): @nogc: nothrow: pragma(LDC_no_moduleinfo); @(section("_reset")) void _reset() { int y = void; auto x = 42; y = x; while (true) {} } ENTR…

QEMUを使ってCortex M3なバイナリを動かしてみる

環境 $ cat /proc/version Linux version 4.8.0-41-generic (buildd@lgw01-18) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #44-Ubuntu SMP Fri Mar 3 15:27:17 UTC 2017 $ ldc2 -version| head -1 LDC - the LLVM D compiler (1.0.0): インス…

STM32F3DISCOVERYボード向けに実行プログラムをLDCで作ってみようとしてハマった

表題のとおり、STM32F3DISCOVERYボード向けに実行プログラムをLDCで作ってみようとしてハマった。 D言語のソースコード import ldc.attributes; extern(C): @nogc: nothrow: pragma(LDC_no_moduleinfo); @(section("_reset")) void _reset() { int y = void;…

上野動物園に行った

pic.twitter.com/gfbwj8H1B9— けものフレンズをみて (@shitsyndrome) 2017年3月11日 上野動物園に行った。多摩動物公園よりは狭かったけど、数多くの動物がいた。 パンダ 人で賑わっていて辛かった。パンダも奥のほうでほとんど姿を見せず、おたかくとまった…

re-visit kNN and operf/LDC

以前書いたものはシングルスレッド版のRust/OCamlよりも遅かった。これをprofilingしてみる。 スペック $ lscpu [kubo39:knn][git:master] Architecture: x86_64 CPU 操作モード: 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: …

多摩動物公園に行った

多摩動物公園に行った。 サーバル お目当てのサーバルキャット。耳はけっこう個体差があるようだ。 あまり人間は好きでないのだろうか、やや人から離れた場所をうろついていた。 ライオン 運良くめちゃくちゃ吼えてるとこに遭遇した。ライオンの咆哮はめちゃ…

松江周辺のうまい店

ずいぶん戻っていないが、青春時代の記憶を頼りにまとめた。 おおはかや - 鰻のお店。アクセスは悪いけどめちゃくちゃ美味しい。 海鮮問屋博多 - ちょっと場末の香りがする、海鮮系の料理のお店。郷土料理のかにまま、鯛ままがおいしい。 きがるそば - 松江…

各OSにおけるRustのインストール方法

たまーに聞かれるので。うろ覚えで書いているので違ってたら直すのでこっそり教えてください。 Linux/macOS/FreeBSD/Windows rustup使いましょう。macOSでもhomebrew使うよりrustup使ったほうがいいと思います。.bashenvなり.zshenvなりに export PATH="$HOM…

DMD on FreeBSD

だいたいこの記事のとおりなんだけど、細々と補足をしておく。 まず選定したFreeBSDのboxの話。最初はfreebsd/FreeBSD-11.0-STABLEのboxを試していたのだけど、これは毎度VMが突然シャットダウンしてしまって使い物にならなかったためにfreebsd/FreeBSD-11.0…

環境構築まわり

どういうツール使ってるかなどまとめておくと移行のときよさそう? 最近使ってるツールだらだらあげていく。 Tool emacs git zsh tree gcc nasm anyenv (pyenv/rbenv/denv) rustup rg binutils (gdb/readelf/objdump/file/nm/etc..) strace ltrace valgrind …

FreeBSDとNetBSDとOpenBSDをVirtualBox on OSXでいろいろ触る

ここのところ仕事そっちのけでやっています。 FreeBSD 11-STABLE vagrant init freebsd/FreeBSD-11.0-RELEASEしてvagrant upすると作れる。 デフォルトのシェルはcshだったかな。pkg installでだいたい入るので便利。rustupも使えるしcargo installでripgrep…

ぱっと使えそうなRust製のツール

cargo installで入れられそうなやつを雑にまとめてみた。 ripgrep(rg) - はやいgrep、あるいはag。 xsv - CSVツールキット。 alacritty - 速いらしいターミナルエミュレータ。 parallel - GNU parallelのRust版。 coreutils - GNU coreutilsのポート。使えな…

D言語でFD_CLOEXECをデフォルトにする?

表題のとおりの提案をしてみたいと思った。(思っただけ) FD継承はUNIXの伝統だが、意図しない継承によって様々なセキュリティ上の問題を引き起こしてきた。(APIデザインケーススタディとかPEP446あたり参照) そのため最近の言語 (Perl/Go/Ruby/Python/Rust…

2016年にやったこと

便乗してまとめておきます。 ギョーム 死んだ目でひたすらgrep業してたことしか覚えていません。はやく転職したいです。 shibuya.d 2回やりました。 shibuya.d #1 - connpass shibuya.d #2 - connpass 来年は未定です。筑波でやるらしいので引退? OSS? なんか…

D言語のcast

D言語で型変換したかったら基本は std.conv.to 使うのが安全である。 import std.conv; void main() { int a = 1; long b = a.to!long; assert(b == 1); } std.conv.toは安全であるが、安全であるということは制約が強いということでもある。例えば以下のコ…

shibuya.d #2 開催しました

12/15(木)に開催しました。参加いただいた皆様、ありがとうございました。 connpass.com 当日の様子はTogetterでまとめています。ツイートの利用問題ありましたら誰でも編集可能にしているので削除お願いします。 ツイートを使わせていただきました。誰でも…

D言語でシュッとスクリプトっぽく試す

qiita.com これがとてもいいと思い、D言語で同じようなものを作ってみた。とりあえず3rd party製のものを意識しない版。 import std.stdio; import std.regex; import std.format; import std.process; import std.path; import std.file; import core.stdc.…

D言語とOS開発と自作OS

この記事は 自作OS Advent Calendar 2016 の3日目です。 D言語とOS開発 D言語はシステムプログラミング言語であり、OSを開発することのできる言語のひとつです。D言語でのOSプロジェクトはすでにいくつかあります。 Vild/PowerNex 今D言語でもっとも勢いがあ…

週末

土曜日にボドゲ会をやりました。 https://t.co/TP1GfYrJEeこの中だと魔王、あやつり人形、海底探検、お邪魔虫をやった。あやつり人形とお邪魔虫がおもしろかった。今回はやらなかったけど街こんとかもおもしろい。— 黄前久美子さんと高坂麗奈さんの距離感 (@…

百合セックス〜〜〜〜〜〜!!!!!!!!!!!!

D言語 vibe.d大変すぎませんか。エラーメッセージが不親切すぎる。。あとnull参照掴むコード多すぎますね、SEGV出す前提なところ契約プログラミングしてほしい。。 アニメ 響け!をみました。久美子回にみせかけた麗奈回では、と思うなどしました。

労 会議が多くつらかった。たいへんつかれた。 アニメ (報告) まといちゃんをみました。 ステラのまほうをみました。

Rust LT会で発表しました

Rust Rust LT会で発表しました。最初スクリーン映らなくて焦った…進行の方にご迷惑おかけしたことをここでお詫びします。 qiita.com まあここに書いてることをまた書いてもあまり意味ないのでこぼれ話を。 取り上げてるmiocoは最近はあまり活発じゃないです…

ひさしぶりに鮨明石いったくらいしかイベントがない。後はLinux関連で本を三冊購入した。ジュンク堂は10000円以上買い物をするとバックと喫茶店のドリンク券がもらえるという知見を得た。 Linuxシステムプログラミングはこの内容はmanみればいいかな、と思い…

木金分で

労 変わらずAWS Lambda。JSの文法に苦しめられていた。 D言語 null参照つらいのでは? アニメ フリップフラッパーズをみました。最高、最高です。今期最高の百合となるのではないでしょうか。それにしても雰囲気最高ってかんじだけどいまだに内容がわからな…