API Changes#
Known differences between Vitruvian and the BeOS/Haiku APIs. Source-level compatibility is the goal; most applications compile and run unchanged. This page tracks the exceptions.
Images#
image_idvalues are local to the application (not system-global as in Haiku).
Processes#
start_watching_systemrequires superuser privileges.
Threads#
suspend_threadis forbidden. Any application calling it will be killed. Haiku spawns threads suspended; Vitruvian usespthread_createwhich starts immediately. The run-state model differs.
Virtual references#
entry_refandnode_refcan be virtual (backed by a Nexus vref) or real (plain Linuxst_dev/st_ino). See the Nexus page for details.BMessage::AddNodeRefis a stub returningB_ERROR. UseAddRefwith anentry_refinstead.
Filesystem#
- See Filesystem Layout for path mapping and attribute storage.
_kern_entry_ref_to_pathis fully implemented for virtual refs (the common case). For real refs with non-root inodes, path resolution is limited.
Keycodes#
- Vitruvian uses evdev keycodes throughout, no Haiku/Linux translation layer.
B_KEY_DOWN"key"field =ev.code(evdev keycode).B_F1_KEY,B_LEFT_ARROW,B_RETURN, etc. are redefined to their evdev values.- Modifier mapping: xkb
Shift→B_SHIFT_KEY,Ctrl→B_CONTROL_KEY,Alt→B_COMMAND_KEY.
OpenGL#
libopengl.sois a separate kit. It is not part oflibbe.so. Applications usingBGLViewmust link againstopenglandGLUexplicitly.BGLView::Drawis the application’s draw method. The renderer’sDraw(BRect)is a no-op.
libbe#
This section tracks generic differences in the C++ API provided by libbe. It will grow as the compatibility layer matures.