* [RefC] Suppress code generation for unnecessary arglist wrappers.
* [RefC] cleanup dead code of arglist.
* Removed Value_Arglist to reduce Closure's allocation overhead.
* fix linter error
* [RefC] make trampoline() safety.
* [RefC] cleanup cStatementsFromANF to keep code simple.
* fix linter error
* fix linter error
* In another time, another galaxy. THE LINTER INVADORS conquaer the all humanity and make them slaves. Under 2024, a only leaved job for every humans is adjusting spaces of source code, or just type gg0vG$== in vim.
* [ test ] update golden value
* added supports 32 params on closure.
* [RefC] [Cleanup] removing duplicate codes.
* [RefC] Switch calling conventions based on the number of arguments to avoid limits on the number of arguments and to reduce stack usage.
* [RefC] Argument that are too large are placed on the heap, as are closures.
* [RefC] use idris2_malloc instead of malloc.
* [RefC] [Cleanup] Keep pure things pure.
* [RefC] Mapped some special constructors to NULL. This reduces malloc cost and generates simpler code in ConCase. But not work yet.
* [RefC] fix merge failure.
* [RefC] stringOps.c replace NULL for NIL.
* [RefC] cleanup
* [RefC] ConstCase now generate simple if-then statements instead of using helpers. This reduces malloc/free costs.
* fix indentation
* fix whitespaces
* [RefC] The name field in Value_Constructor was restored for tycon. But changed to static const*. Hopefully the C compiler will remove the common string constants. The smartest thing to do would be to create a dummy global variable and use its address as a tag, but that would depend on the C compiler to resolve conflicts.
* [refc] a big changes of the space
* [RefC] Little tricks to reduce temporary variables
* spaces
* [RefC] fix compiler warnings
* [RefC] [test] Perform memory leak analysis, if valgrind is installed.
* [RefC] Fix invalid memory read. Fix C compiler warnings.
* [RefC] Fix invalid memory read of strSubstr. [test] Perform memory leak analysis, if valgrind is installed.
* [test] fix junk line
* linter
* linter
* linter
* linter
* [RefC] merge with erase_trivial_constuctors
* merge w/ erase_trivial_constructors
* Revert "merge w/ erase_trivial_constructors"
This reverts commit be593a3715.
* Revert "[RefC] merge with erase_trivial_constuctors"
This reverts commit 3c21eb45d8.
* merge w/ upstream/main
* fix merge failure
* rename
* fix renaming
* [RefC] fix merge fail
* [RefC] renamed C functions for safty.
* [RefC] cleanup
* [RefC] Fix constructor tag of UnconsResult.CHARACTER.
---------
Co-authored-by: Mathew Polzin <matt.polzin@gmail.com>
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
* 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.