Difference between revisions of "Library design"
Hzwakenberg (talk | contribs) m (spelling) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[Category: |
+ | [[Category: Library]] |
+ | == Library Design == |
||
− | |||
− | == Design == |
||
The design depends on the library. (TODO: add a section for each library). |
The design depends on the library. (TODO: add a section for each library). |
||
Line 21: | Line 20: | ||
=== Plugins === |
=== Plugins === |
||
− | The master word is: no magic. The code should be crystal clear. All that can be written in Eiffel is, and when low-level is |
+ | The master word is: no magic. The code should be crystal clear. All that can be written in Eiffel is, and when low-level is needed that should be clearly written in the code. |
In other words, the library basic bricks rely on externals. There are two kinds of externals used in the library: ''built_in'' and ''plug_in''. |
In other words, the library basic bricks rely on externals. There are two kinds of externals used in the library: ''built_in'' and ''plug_in''. |
Latest revision as of 22:27, 21 December 2021
Library Design
The design depends on the library. (TODO: add a section for each library).
Implementation
The library is developed using a few principles.
Memory conservation
If a user does not use the GC, then they should be able to keep the memory footprint under control.
Of course, if one uses the GC, the library should not keep too many objects around just for reuse.
The general solutions are:
- use WEAK_REFERENCE
- if a library function returns a STRING, always return the same -- and/or provide a function that appends into a user-supplied STRING (kinda append_in)
Plugins
The master word is: no magic. The code should be crystal clear. All that can be written in Eiffel is, and when low-level is needed that should be clearly written in the code.
In other words, the library basic bricks rely on externals. There are two kinds of externals used in the library: built_in and plug_in.
external "built_in"
Those are rare. They involve compiler-specific code.
external "plug_in"
Those are the most frequent and are less compiler-involved. They use the general-purpose plugins mechanism.