# V3 library folders Libraries are split by dialect. A compilation session must use **one** dialect folder plus `lib/common` and the shared runtime; do not mix PIM and ISO modules in one session. ```text runtime/syslib/ SysShim, FileIO, SysExceptions, Utf8 (always shared) lib/common/ CharClass, Math, Storage, Strings, SysIO lib/pim/ FpuIO, InOut, NumberIO, RealInOut, StrIO lib/iso/ ISO 10514-1 modules (IOChan, TextIO, Conversions, SysClock, TERMINATION, EXCEPTIONS, ...) lib/gm2/ optional gm2 compatibility modules (DynamicStrings, StdIO, SysStorage, TimeString, wrapc/wrapclock/wraptime) ``` Selection: - `M2make --dialect pim|iso|gm2` adds `lib/`, `lib/common`, `lib/gm2` and `runtime/syslib` to the search path. - `tools/v3-corpus/corpus.sh` selects `lib/iso` for corpus paths under `.../iso/...`, otherwise `lib/pim`, plus common/gm2/runtime. Set `V3_LIBS` explicitly to override. - `compiler/run_tests.sh` passes library files explicitly per session. `lib/gm2` is optional compatibility, not a dialect: it contains gm2-only modules used by the corpus, but standard PIM/ISO sessions should not depend on it.