Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0006353OCamlOCaml runtime systempublic2014-03-26 22:382014-07-16 15:35
Reportergasche 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityhave not tried
StatusconfirmedResolutionopen 
PlatformOSOS Version
Product Version 
Target Version4.03.0+devFixed in Version 
Summary0006353: [github patch] Ephemerons
DescriptionDiscussion and description at:
  https://github.com/ocaml/ocaml/pull/22 [^]



Ephemerons

The current OCaml runtime proposes two kinds of pointers:
    A points hardly to B: if A is alive, B is alive (usual pointers)
    A points weakly to B: when the GC decide that B stops to be alive, A stops to point to B

Weak pointers are very handy when you want to be able to access a data without creating memory leaks. For example hashconsing can be done using the weaksets defined in Weak.Make. However you can't create general weaktable with the current runtime: associative table that keep a data until the key is not needed anymore. The problematic case is when the data points to the key.

Barry Hayes proposed in 1997 the notion of ephemerons which allow to code such table. In its simplest form an ephemeron A with key K and data D keeps D alive while A and K are alive. To sum up ephemerons add the possibility to express conjunctions where you normally have only disjunctions.


Request for Comment and Merge-Request

This merge-request adds ephemerons to ocaml with particularly a modification of the runtime, and a new module in the standard library. An untyped API with an arbitrary number of keys is given in Ephemerons.Obj and two specialized API for one and two keys are provided in Ephemerons.K1 and Ephemerons.K2. Each of these three APIs define a functor for constructing weaktables with the same signature than Hashtbl.
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0011847)
doligez (administrator)
2014-07-16 15:35

Ephemerons missed the feature deadline for 4.02 because of license issues but I hope they'll be included for 4.03.

- Issue History
Date Modified Username Field Change
2014-03-26 22:38 gasche New Issue
2014-07-16 15:35 doligez Note Added: 0011847
2014-07-16 15:35 doligez Status new => confirmed
2014-07-16 15:35 doligez Target Version => 4.03.0+dev


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker