Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
d24fd1a
Fixed the linking of the uv library for Intel Macbooks
Oct 10, 2025
4910656
Basic Bumb allocation
Sep 24, 2025
6d197f1
First approach of a 2nd step of memory-management, but first done in …
Oct 6, 2025
ec4ccb1
Fixed-sized allocation approach.
Oct 24, 2025
ecf05a5
cMalloc -> acquire and cFree -> release
Oct 29, 2025
afc9ac3
renaming: array_erase_fields -> array_erase
Oct 29, 2025
19eac57
renaming: c_ref_erase_field -> c_ref_erase
Oct 29, 2025
3038867
created a testclass for my tests. Testing records with several sizes
Oct 29, 2025
a0d41e4
created a small test set for asserting the saving slot size
Oct 29, 2025
114697a
approach for testing that no memory is leaked by acquire -> does not …
Oct 29, 2025
580d55c
added some more testprograms
Oct 31, 2025
101816e
Fix tail resumptive analysis for vars (#1154)
timsueberkrueb Oct 27, 2025
2c3e292
Fix #1165: improve position info for UnboxInference errors (#1167)
jiribenes Oct 29, 2025
80c481d
Add 'did you mean' help for mistaken type names (#1162)
jiribenes Oct 30, 2025
6e585df
Multiple CI jobs for PRs (#1173)
jiribenes Oct 30, 2025
addac58
refactored cMalloc.c
Oct 31, 2025
d2b29aa
Big objects are now splitted into a multiple objects with links to th…
Oct 31, 2025
4d121f5
Big objects are now splitted into a multiple objects with links to th…
Oct 31, 2025
db8fd0a
two more test programs two_xxl_objects.effekt and two_xxxl_objects.ef…
Nov 6, 2025
00f5b03
short review with Philipp on 05.11.2025 of splitted allocation approach
Nov 6, 2025
5490daa
comment adjusted
Nov 6, 2025
f7de6d8
Fixed the linking of the uv library for Intel Macbooks
Oct 10, 2025
617ecbe
Basic Bumb allocation
Sep 24, 2025
29ea467
First approach of a 2nd step of memory-management, but first done in …
Oct 6, 2025
453dc58
Fixed-sized allocation approach.
Oct 24, 2025
f501879
cMalloc -> acquire and cFree -> release
Oct 29, 2025
69737a5
renaming: array_erase_fields -> array_erase
Oct 29, 2025
cbe6d36
renaming: c_ref_erase_field -> c_ref_erase
Oct 29, 2025
1d9ef45
created a testclass for my tests. Testing records with several sizes
Oct 29, 2025
1b9ab87
created a small test set for asserting the saving slot size
Oct 29, 2025
5d5fb53
approach for testing that no memory is leaked by acquire -> does not …
Oct 29, 2025
6166e6b
added some more testprograms
Oct 31, 2025
307fb44
refactored cMalloc.c
Oct 31, 2025
c81568c
Big objects are now splitted into a multiple objects with links to th…
Oct 31, 2025
536cd3c
Big objects are now splitted into a multiple objects with links to th…
Oct 31, 2025
679e9de
two more test programs two_xxl_objects.effekt and two_xxxl_objects.ef…
Nov 6, 2025
29f27b8
short review with Philipp on 05.11.2025 of splitted allocation approach
Nov 6, 2025
329cffa
comment adjusted
Nov 6, 2025
1c396c2
Merge remote-tracking branch 'origin/contant-time-reference-counting'…
Nov 6, 2025
2cd235f
more test programs
Nov 6, 2025
f929949
implemented a custom valgrind implementation by substituting all invo…
Nov 7, 2025
46f4c12
edited + added more test programs
Nov 7, 2025
ba9dbe7
First contribution of lazy reference counting.
Nov 10, 2025
86654fa
Deleted monitoring for benchmarking
Nov 11, 2025
259ce40
Optimization: refs are also running on acquire & release now.
Nov 13, 2025
410f56f
We substituted the test in assertNumberLeakedBlocks with flushTodoLis…
Nov 13, 2025
aaeed38
optimization: "Normal" effekt slots load environment pointer only if …
Nov 13, 2025
b24a7b8
lazy reference counting fix. A sentinel slot is implemented such that…
Nov 13, 2025
22b1d6c
speedup of flushing todo-list approach by implementing a usedBitMask …
Nov 14, 2025
d487a54
comment the flushTodo list out again for testing
Nov 14, 2025
53aa8c4
Explicitly implemented flushtodo list
Nov 17, 2025
f6321e5
more test programs + we now batch the flush todo list when having >= …
Nov 18, 2025
f05cd06
testing approach with 128 bytes instead of 64
Nov 19, 2025
3ce9979
deactivated debug
Nov 19, 2025
23e3a34
back to 64 bytes
Nov 19, 2025
24771ce
reduced back to simple lazy reference counting
Nov 19, 2025
a3a28d0
converted lazy reference counting into llvm
Nov 19, 2025
387226d
optimized llvm allocator
Nov 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions effekt/jvm/src/main/scala/effekt/Runner.scala
Original file line number Diff line number Diff line change
Expand Up @@ -287,17 +287,24 @@ object LLVMRunner extends Runner[String] {

def libuvArgs(using C: Context): Seq[String] =
val OS = System.getProperty("os.name").toLowerCase

// only relevant for macOS
val arch: String = System.getProperty("os.arch")
assert(!OS.contains("mac") || List("aarch64", "x86_64").contains(arch), "If you have a macbook -> It should have either an aarch64 or x86_64 architecture.")

val libraries = C.config.clangLibraries.toOption.map(file).orElse {
OS match {
case os if os.contains("mac") => Some(file("/opt/homebrew/lib"))
case os if os.contains("mac") && arch.equals("aarch64") => Some(file("/opt/homebrew/lib"))
case os if os.contains("mac") => Some(file("/usr/local/lib"))
case os if os.contains("win") => None
case os if os.contains("linux") => Some(file("/usr/local/lib"))
case os => None
}
}
val includes = C.config.clangIncludes.toOption.map(file).orElse {
OS match {
case os if os.contains("mac") => Some(file("/opt/homebrew/include"))
case os if os.contains("mac") && arch.equals("aarch64") => Some(file("/opt/homebrew/include"))
case os if os.contains("mac") => Some(file("/usr/local/include"))
case os if os.contains("win") => None
case os if os.contains("linux") => Some(file("/usr/local/include"))
case os => None
Expand Down
24 changes: 24 additions & 0 deletions effekt/jvm/src/test/scala/effekt/FlatTests.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package effekt

import sbt.io.*
import sbt.io.syntax.*

import java.io.File
import scala.language.implicitConversions
import scala.sys.process.Process

// df: My own test class to run my requested tests automatically
class FlatTests extends EffektTests {

def backendName = "llvm"

override def valgrind = false // works on linux only

override lazy val positives: Set[File] = Set(
examplesDir / "flat" / "optimized"
)

override lazy val withoutOptimizations: Set[File] = Set(
examplesDir / "flat" / "nooptimized",
)
}
2 changes: 1 addition & 1 deletion effekt/jvm/src/test/scala/effekt/LLVMTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class LLVMTests extends EffektTests {

override def valgrind = sys.env.get("EFFEKT_VALGRIND").nonEmpty
override def debug = sys.env.get("EFFEKT_DEBUG").nonEmpty

override lazy val positives: Set[File] = Set(
examplesDir / "llvm",
examplesDir / "pos",
Expand Down
Loading
Loading