Core

Core functionality resides in this namespace. This includes things such as:

  • Being able to write text to the console window.
  • Accessing storage.
  • Communication through network interfaces.
  • Data structures for managing program state.
  • Algorithms for performing common tasks.

I haven't quite settled on how this "core" library should be organized yet, but i do have some overall goals to strive for.

Goals:

  • Usable and practical.
  • Have all core lib things built on a layer of primitives, allowing programmers to use internal details that are usually hidden in most other standard libraries for other languages. Most programmers won't notice, because they're just interested in doing that simple task, with as little insight as possible. But, in some circumstances, you need to push the hardware to the limit, and you need to cut as many corners as possible, and if that means doing one less allocation, to speed up your software by a factor 10, then it really sucks that you have to reimplement some library function you already have.
  • Must cover a feature set that at least matches that of C. So all the basic ability for cross platform input and output through files, pipes, sockets. A suite of the most fundamental and well known algebraic functions, including trigonometric and logarithmic functions and more. And of course a number of datastructures and algorithms to organize and transform data, such as hash maps, ordered trees, various kinds of lists, queues, stacks, heaps. And some algorithms for sorting, traversing, mapping, searching, etc. And not to forget functions for handling string information, and time and calendar information.