author: Michel Dagenais
copyright: Michel Dagenais, GNU General Public License, 1998
date: 17 January 1998
keyword: Modula-3
keyword: library
keyword: wide audience

# The Modula-3 Core Library

## Abstract

This library contains the Modula-3 required interfaces, core runtime services (garbage collection, threads, runtime checking) and supporting modules. It encapsulates almost all the platform specific code.

## Required Interfaces

- float implements the required interfaces for REAL, LONGREAL, and EXTENDED numbers, as well as supporting functions.
- text implements the required TEXT interface.
- thread implements the required Thread interface.
- word implements the required Word interface.

## Useful Interfaces

A few mature and commonly used interfaces also belong to m3core.

- time implements the Date, Time, and Tick interface, serving all time related functions.
- weakref provides weaker references which do not prevent objects from being garbage collected, and hooks to have cleanup procedures to be called before an object will be collected.
- fingerprint computes a signature for a string and is used to fingerprint the type declarations to verify their structural equivalence.
- runtime implements the garbage collector, and other runtime support functions including the runtime type information.

## Low level and platform dependent support functions

- unix interfaces to all the POSIX system calls, accounting for platforms differences.
- win32 interfaces to all the Win32 system calls.
- C defines the correspondance between C basic types and Modula-3 types, and interfaces to low level C functions (string, signal handling, setjmp...). Module M3toC offers conversions between char * and TEXT.
- Csupport provides support functions in C, mostly a more consistent (across all platforms) dtoa, and bit vectors for implementing SETs.
- main contains the empty `Main` interface which must be exported by any program main module.
- convert is now replaced by the newer Lex/Fmt modules for reading/writing numbers.