Added new subsection

This commit is contained in:
Justin Ethier 2017-01-05 04:15:55 -05:00
parent ca5b0c8e80
commit 6736f55137

View file

@ -25,6 +25,7 @@ In addition, developing [Husk Scheme](http://justinethier.github.io/husk-scheme)
- [Garbage Collector](#garbage-collector)
- [Background: Cheney on the MTA](#background-cheney-on-the-mta)
- [Cyclone's Hybrid Collector](#cyclones-hybrid-collector)
- [Developing the New Collector](#developing-the-new-collector)
- [Heap Data Structures](#heap-data-structures)
- [C Runtime](#c-runtime)
- [Data Types](#data-types)
@ -234,7 +235,11 @@ Under Cyclone's runtime each thread contains its own stack that is used for priv
Heap objects are not relocated, making it easier for the runtime to support native threads. In addition major GC uses a collector thread that executes asynchronously so application threads can continue to run concurrently even during collections.
It took a long time to research and plan out all of this before it could be implemented. There was a noticeable lull in Github contributions during that time:
More details are available in a separate [Garbage Collector](Garbage-Collector.md) document.
### Developing the New Collector
It took a long time to research and plan out the new GC before it could be implemented. There was a noticeable lull in Github contributions during that time:
<img src="images/cyclone-contribs.png">
@ -248,8 +253,6 @@ The actual development consisted of several distinct phases:
- Phase 5 - Required the pthreads library, and stood Cyclone back up using new GC algorithm.
- Phase 6 - Added SRFI 18 to support multiple application threads.
More details are available in a separate [Garbage Collector](Garbage-Collector.md) document.
### Heap Data Structures
Cyclone allocates heap data one page at a time. Each page is several megabytes in size and can store multiple Scheme objects. Cyclone will start with a small initial page size and gradually allocate larger pages using the Fibonnaci Sequence until reaching a maximum size.