/images/avatar.png

LFX 2026 First Stage Key Takeaways in WasmEdge

English Version

In February 2026 I happened to see the LFX program on social media and discovered that WasmEdge was one of the participating projects. After looking into it, I learned that LFX is similar to Google Summer of Code but organized by the Linux Foundation. At the time I was in my second year of graduate school; my thesis was progressing smoothly and I had fewer courses, and because I was interested in open source and the Linux Foundation, I decided to apply. I also wrote a few posts to learn more.

FreeBSD DTrace 基礎了解

背景

可以知道的相關背景知識

歷史

最早在 Sun 裡面使用,後來移植到不同作業統,後來在 illumos 上面也有,在 Windows 也有。OpenDTrace 專案於 2016 年 9 月在GitHub上啟動,專案提供了程式碼和系統內部機制的完整文件。

Debian 系列相關的套件管理工具

dpkg

最底層工具,代表 Debian pkg,只負責安裝單一個檔案,發現沒有相依套件的時候,什麼時候都不會做。

apt

高解管理工具,負責像是把相依套件安裝完成。

apt-get

apt 的前身,事實上,apt合併了apt-get 跟 apt-cache,apt-get 是 command-line utility,跟 apt 使用同樣的 apt library。

DTrace Tail-Call Optimization 問題

正文

我在 DTrace 的時候,有時候會看到以下奇怪的 log,有奇怪的回傳值:

  0  52547 casper_mpo_socket_check_poll_t:return casper_mpo_socket_check_poll_t returned 0
  0  52549 casper_mpo_socket_check_receive_t:return casper_mpo_socket_check_receive_t returned 0
  0  52625 casper_mpo_vnode_check_lookup:return casper_mpo_vnode_check_lookup returned 0
  0  52625 casper_mpo_vnode_check_lookup:return casper_mpo_vnode_check_lookup returned 0
  0  52631 casper_mpo_vnode_check_open:return casper_mpo_vnode_check_open returned -105548670090024
  0  52681 casper_check_allowed_open:return casper_check_allowed_open returned 0
  0  52659 casper_mpo_vnode_check_stat_t:return casper_mpo_vnode_check_stat_t returned 0
  0  52635 casper_mpo_vnode_check_read_t:return casper_mpo_vnode_check_read_t returned 0

這是因為我的程式碼是這樣寫:

RPI4 MAC 模組無法載入問題

問題描述

我在 RPI4 使用 FreeBSD 15.0 的時候,編譯 MAC 模組的時候,開機的時候並不會自動載入。

如下我在自己的 mac module 目錄使用 Makefile 編譯:

kola@generic:~/proj/mac_casper $ ls
Makefile  checker.h  mac_casper.c  mac_casper.ko.full test
README.md  checker.o  mac_casper.h  mac_casper.o  test_program
a.txt   document  mac_casper.kld  machine   vnode_if.h
casper_src  export_syms  mac_casper.ko  opt_global.h  vnode_if_newproto.h
checker.c  label.h   mac_casper.ko.debug script   vnode_if_typedef.h
kola@generic:~/proj/mac_casper $ cat Makefile 
.include <bsd.own.mk>

KMOD=   mac_casper
SRCS=   mac_casper.c
SRCS+= mac_casper.h
SRCS+= checker.c
SRCS+= checker.h
SRCS+=  label.h
SRCS+= vnode_if.h

.include <bsd.kmod.mk>

如上,Makefile 基本上就是使用 sys/conf/kmod.mk 的 Makefile 編譯。

Compiler, Assembler and Interpreter 了解

C 語言

Preprocessing: 預處理,把程式碼所有用 # 開頭的指令進行替換

  1. C ISO 標準定義,所謂的 翻譯階段 (Phases of Translation)。C 語言的編譯過程在標準中被拆解為 8 個邏輯階段,而「預處理」主要涵蓋了前 4 個階段
    1. Phase 1-3: 處理字元映射、將連行符號(\)合併、把註解換成空格
    2. Phase 4: 執行所有 預處理指令(也就是你看到的 # 開頭的東西)並進行 巨集展開 (Macro Expansion)。

最後產出了 .i 檔案,可以參考C语言的翻译阶段