yhara.jp

Recent Posts

Shiika進捗(2022年)

2022-12-25
Tech

こんばんわ。本記事は言語実装のカレンダー | Advent Calendar 2022 - Qiitaの24日目の記事です。

Shiikaは私が作っているRuby風の文法をもつ静的型付け言語です。静的言語はだいたい性能を重視した設計になっていることが多くて、動的言語は書きやすさを重視した設計が多いのですが、「静的だけど書きやすさ重視の設計」にすることで、静的なエラーチェックと書きやすさを両立したいと考えています。「Rubyっぽい手触りの静的言語」を目指しています。

2022年の主な進捗

  • パターンマッチ
    • enumに対し、match x when Some(y) ... とかでパターンマッチできるようになりました。これがないと始まらないよね。
  • Module
    • RubyのModule(Rustでいうとtraitみたいな)を実装しました。実現方法はSwiftのwitness tableというやつを参考にしました。
(more...)



mac vimproc コンパイル

2022-04-04
Tech

最新のvimprocをmacでコンパイルしようとしたらエラーになったのでメモ

/Users/yhara/.vim/bundle/vimproc % make -B
/Library/Developer/CommandLineTools/usr/bin/make -f make_mac.mak
clang -O2 -W -Wall -Wno-unused -Wno-unused-parameter -bundle -fPIC  -o lib/vimproc_mac.so src/proc.c
src/proc.c:10:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
         ^~~~~~~~~
1 error generated.
(more...)


40%キーボードはいいぞ

2022-04-01
Tech

いいぞ。

40%キーボードとは?

キー数が通常の40%、つまり50個前後しかないキーボードのこと。

そんなので入力できるの?

できるぞ。QMK Firmwareというオープンソースのファームウェアに対応していればキー配置を極めて柔軟に設定できるので、例えばAを押したときに

(more...)

はんだ付けしたキースイッチを外す方法

2022-03-20
Tech

自作キーボードを何台も組み立てていると、だんだん気になってくるのがキースイッチのコストである。10個450円とかで買えるとはいえ、1台分だと数千円になってしまう。

ということで、もう使わなくなったキーボードからキースイッチを回収することを考える。

梅コース

一番安いのだとこういう道具がある。ばねの力で吸引力を生み出すタイプで、はんだごてを当てて、溶けた瞬間にポンと吸ってやる。

このタイプは前に触ったことがあるけど、キースイッチの場合はあまりうまくいかなかった。タイミングがシビアなのかな?

(more...)

Alloyさわってみたメモ

2022-03-18
Tech

ちょっと形式手法ツールAlloyを使ってみたい場面があったのでとりあえずインストールしてみた。昔ちょっとだけ触ったことあるんだけど。

Macだとbrew install alloyで入るので楽。

とりあえずチュートリアルやるか〜と思ったものの:

Visualizeすると「全部非表示になりました。Themeを設定してください」みたいなメッセージが表示される。うーん。仕様が変わったのかな。

(more...)

error: Invalid instruction with no BB

2021-10-01
Tech

自作言語の開発中、LLVMが以下のメッセージを吐いて死ぬのを調査したメモ。 ./bin/llvm-dis: error: Invalid instruction with no BB (Producer: 'LLVM12.0.1' Reader: 'LLVM 12.0.1')

このメッセージで検索すると lib/Bitcode/Reader/BitcodeReader.cpp がヒット

    if (!CurBB) {
      I->deleteValue();
(more...)

LLVM本体にデバッグログを入れる

2021-10-01
Tech

LLVMのエラーメッセージはあまり親切でない。Rustの異常な親切さに慣れてきたのでそう思うのかもしれないが。

例えばllvm-disの出したエラーがこれ:

Assertion failed: (InitVal->getType() == getValueType() && "Initializer type must match GlobalVariable type"), function setInitializer, file /Users/yhara/research/llvm-12.0.1.src/lib/IR/Globals.cpp, line 405.

型が違うことはなんとか分かるが、せめて何と何だったのかくらいは教えてくれないとデバッグのしようがない。

(more...)

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author