0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-02 18:18:56 +02:00

modules: Improve README bullets.

This commit is contained in:
Jason Volk 2020-01-11 18:18:07 -08:00
parent e2e4ea544b
commit 86bf383b4d

View file

@ -2,8 +2,6 @@
This directory contains dynamically loadable functionality to libircd. This directory contains dynamically loadable functionality to libircd.
#### Layout
#### Approach #### Approach
Unlike most of the module systems found in traditional C free software Unlike most of the module systems found in traditional C free software
@ -13,17 +11,28 @@ direction is made viable by C++ and advances in the compiler and linker
toolchains. The result is significantly simpler and more convenient for toolchains. The result is significantly simpler and more convenient for
developers to work with. developers to work with.
- Modules are loaded with `RTLD_GLOBAL` on both posix and windows platforms. ##### GLOBAL SYMBOLS
Modules are loaded with `RTLD_GLOBAL` on both posix and windows platforms.
Use of C++ namespaces, visibility attributes, `STB_GNU_UNIQUE`, etc are Use of C++ namespaces, visibility attributes, `STB_GNU_UNIQUE`, etc are
adequate to make this modernization. adequate to make this modernization.
- All project code is built to silently weaken undefined symbols. This means ##### WEAK UNDEFINED SYMBOLS
All project code is built to silently weaken undefined symbols. This means
a complicated interface declared in a header, like a class interface with a complicated interface declared in a header, like a class interface with
public and private and static members -- typical in C++ -- can be included public and private and static members (typical in C++) can be included
by itself into any part of the project without knowing where the definitions by itself into any part of the project without knowing where the definitions
of that interface are until they are *first used* at runtime. If said of that interface are until they are *first used* at runtime.
definitions are not available because they are in an unloaded module, a C++
exception is thrown directly from the callsite. If definitions are not available because they are in an unloaded module: a C++
exception is thrown directly from the callsite. We have built this action
is built into the lookup mechanism of the runtime dynamic linker; none of
this requires knowledge or effort from developers to use.
#### Layout
(TODO)
## Getting started ## Getting started