OILS / doc / portability.md View on Github | oilshell.org

53 lines, 33 significant
1---
2default_highlighter: oils-sh
3---
4
5Portability
6===========
7
8What does your platform need to run Oils?
9
10These are some notes that supplement [INSTALL](INSTALL.html).
11
12<div id="toc">
13</div>
14
15## Issues in the core of Oils
16
17### GNU libc for extended globs
18
19For matching extended globs like `@(*.cc|*.h)`, Oils relies on GNU libc
20support.
21
22- This is not a POSIX feature.
23- It's also unlike bash, which has its own extended glob support.
24
25TODO: when using other libc, using this syntax should be an error.
26
27### Atomic Assignments
28
29The signal handler assumes that int and pointer assignments are atomic. This
30is a common and widespread assumption.
31
32- Related: [Atomic vs. Non-Atomic
33 Operations](https://preshing.com/20130618/atomic-vs-non-atomic-operations/)
34 by Jeff Preshing
35
36<!--
37As of 2024, the GC object layout doesn't depend on endian-ness.
38
39Tagged pointers may change this. A value may be either a pointer, which
40implies its least significant bits are zero, or an immediate value.
41
42We will have some #ifdef for it.
43-->
44
45## Extra Features
46
47### USDT - Userland Statically-Defined Tracing
48
49Our C++ code has `DTRACE_PROBE()` macros, which means we can use tools like
50`bpftrace` on Linux to make low-overhead queries of runtime behavior.
51
52The probe names and locations aren't stable across releases.
53