* start implement drop spec
* [RefC] remove vars after prim function call
* [RefC] gc pointer processing changed
* [RefC] fix memory leak in stringIteratorToString
* [RefC] runtime.c refactoring
* Implement basic reuse analisis
* [RefC] do not delete reusable variables in value in let
* [RefC] Use names instead tags in reuse map
* [RefC] Don't set all fields to null in reuse constructor
* Use record syntax in RefC
* Add some utility functions to RefC
* Sort output in garbageCollect refc test
* Add memory leak test for RefC
* [RefC] Remove variable only from body in let
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
* [RefC] Remove borrowed set from env
* [RefC] Use Ref variable for Enviroment instead of passing as an argument
* [RefC] Use locally function as combinator
* [RefC] removing unnecessary dup and remove during pattern matching
* Update refcTests and refcMemoryLeakTests
* Remove some test files
* move CHANGELOG entry to CHANGELOG_NEXT
* Move refc-memory tests
* Change calling convention test
* [RefC] [Test] Reuse test
---------
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
Co-authored-by: Mathew Polzin <matt.polzin@gmail.com>
* RefC backend improvements
1. OnCollect had the wrong number of arguments. The code creator expects
3 arguments, but onCollect in prim.h expected 4 arguments. The first of which
was an erased arguments. That is now fixed.
2. OnCollect did not call `newReference` when creating a new reference to the pointer
and the freeing function
3. OnCollect and OnCollectAny still had a spurious printf statement
Those issues have been fixed, the test case can be found in
tests/refc/garbageCollect
4. The IORef mechanism expects that the %World token will be passed around
consistently. This is not the case. States in Control.App make use of
IORefs, but the function created from Control.App.prim_app_bind
had the world token erased to NULL.
Now, IORefs are managed using a global variable,
IORef_Storage * global_IORef_Storage;
referenced in cBackend.h, defined in the created .c file, and set to NULL
in main();
5. While multithreading and forking is still not supported, compiling a program
that makes use of Control.App demands a C implementation of prim_fork.
Files support/refc/threads.c and support/refc/threads.h provide a
dummy implementation for it, so that Control.App programs compile and run.
A test for these 2 issues is given in tests/refc/issue2424
* format changes
to make the linter happy
* format changes
to make the linter happy
* format changes
to make the linter happy
* spelling mistake braket -> bracket
Co-authored-by: Volkmar Frinken <volkmar@onutechnology.com>