* 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] delete unnecessary conversion to keep code simply.
- [RefC] rename some C functions to confliction safe.
* make the linter feels good.
* Get me a job as a linter slave.
* [RefC] Added hard fail for unsupported primitives.
* Fix typo.
This fixes problem of creation the garbage of zombie processes on POSIX
systems. This also makes behaviour of `popen2` identical in Windows,
namely, all resources are freed only when waiting, giving at the same
time an ability to observe the exit code afterwards.
* Create a separate Makefile for the Idris 2 support libraries.
* Update INSTALL.md
* satisfy natural language linter
* Add to CHANGELOG
* Update CHANGELOG.md
* implement popen and pclose (to an extent) for NodeJS
* bring node020 back into tests.
* ah, I see what was being done here. Fix the idris for the test.
* fix test's unreachable clause warning
* fix expectation
* Add note to CHANGELOG
* small tweaks to get popen into merge-ready state.
* Fix symbom mangling
* Revert "Fix symbom mangling"
This reverts commit 6481e80155.
* Fix typo
* [RefC] Add missed prims of setBuffer* .
* [ fix ] formatting
* [ re #2609 ] Use 'UInt' instead of 'Word'
More descriptive/to the point / Less assumed knowledge.
There are no *LE suffixes for UInt8, since endianness is to do with
multiple bytes and UInt8 is a single one.
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
Co-authored-by: Thomas E. Hansen <teh6@st-andrews.ac.uk>
* [ re #2742 ] Count no. processors online rather than configured
Seems there might be some oddities with what is reported when, e.g.
reporting the maximum number of processors supported by the currently
installed motherboard, regardless of which processor is socketed.
* [ #2754 ] Update CHANGELOG
* first pass at signal support for node backend
* change signal values to int's
* implements defaultSignal
* return -1 as expected by calling API if any error is raised by nodejs runtime
* finishes signal support for nodejs
* extract repetitive foreign import identifiers
* fix comments
e79e4277 ("[ fix ] Make Bits types use int switch statement in RefC")
made the RefC backend generate code calling `extractInt` with Bits
types, bit did not add the extra cases to `extractInt`. This commit adds
the missing cases.
Fixes#2452
Modern compilers should be smart enough regardless and generate
efficient code for the sequence of ifs, this is really just a syntax
change to make the code shorter.
* 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>