@effekt-lang/effekt 0.56.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21,42 +21,26 @@ def size[T](arr: ResizableArray[T]) = arr.rawSizePtr.get
21
21
 
22
22
  /// Allocate a new, empty dynamic array with given initial capacity
23
23
  def resizableArray[T](capacity: Int): ResizableArray[T] = {
24
- ResizableArray(ref(0), ref(allocate(capacity)))
24
+ ResizableArray(ref(0), ref(unsafeAllocate(capacity)))
25
25
  }
26
26
 
27
- /// Allocate a new, empty dynamic array
27
+ /// Aallocate a new, empty dynamic array
28
28
  def resizableArray[T](): ResizableArray[T] = resizableArray(8)
29
29
 
30
+
30
31
  /// Throw an OutOfBounds exception if index is not a valid index into arr
31
- def boundsCheck[T](arr: ResizableArray[T], index: Int): Unit / Exception[OutOfBounds] = {
32
+ def boundsCheck[T](arr: ResizableArray[T], index: Int): Unit / Exception[OutOfBounds] =
32
33
  if (index < 0 || index >= arr.size) {
33
34
  do raise(OutOfBounds(), "Array index out of bounds: " ++ show(index))
34
35
  }
35
- }
36
36
 
37
- /// get the element at position index in the array
38
- ///
39
- /// precondition: index is a valid index into the array
40
- ///
41
- /// O(1)
42
- def unsafeGet[T](arr: ResizableArray[T], index: Int): T = {
43
- arr.rawContentPtr.get.unsafeGet(index)
44
- }
37
+
45
38
  /// get the element at position index in the array
46
39
  ///
47
40
  /// O(1)
48
41
  def get[T](arr: ResizableArray[T], index: Int): T / Exception[OutOfBounds] = {
49
42
  arr.boundsCheck(index);
50
- arr.unsafeGet(index)
51
- }
52
-
53
- /// set the element at position index in the array
54
- ///
55
- /// precondition: index is a valid index into the array
56
- ///
57
- /// O(1)
58
- def unsafeSet[T](arr: ResizableArray[T], index: Int, value: T): Unit = {
59
- arr.rawContentPtr.get.unsafeSet(index, value)
43
+ arr.rawContentPtr.get.get(index)
60
44
  }
61
45
 
62
46
  /// set the element at position index in the array
@@ -64,19 +48,7 @@ def unsafeSet[T](arr: ResizableArray[T], index: Int, value: T): Unit = {
64
48
  /// O(1)
65
49
  def set[T](arr: ResizableArray[T], index: Int, value: T): Unit / Exception[OutOfBounds] = {
66
50
  arr.boundsCheck(index);
67
- arr.unsafeSet(index, value)
68
- }
69
-
70
- /// swap the elements at the given positions in the array
71
- ///
72
- /// precondition: both are valid indices into the array
73
- ///
74
- /// O(1)
75
- def unsafeSwap[T](arr: ResizableArray[T], index1: Int, index2: Int): Unit = {
76
- val raw = arr.rawContentPtr.get
77
- val tmp = raw.unsafeGet(index1)
78
- raw.unsafeSet(index1, raw.unsafeGet(index2))
79
- raw.unsafeSet(index2, tmp)
51
+ arr.rawContentPtr.get.set(index, value)
80
52
  }
81
53
 
82
54
  /// swap the elements at the given positions in the array
@@ -84,22 +56,10 @@ def unsafeSwap[T](arr: ResizableArray[T], index1: Int, index2: Int): Unit = {
84
56
  /// O(1)
85
57
  def swap[T](arr: ResizableArray[T], index1: Int, index2: Int): Unit / Exception[OutOfBounds] = {
86
58
  arr.boundsCheck(max(index1, index2))
87
- arr.unsafeSwap(index1, index2)
88
- }
89
-
90
- /// Change the dynamic to have exactly the given capacity
91
- ///
92
- /// precondition: given capacity is at least the size of the array
93
- ///
94
- /// O(n)
95
- def unsafeSetCapacity[T](arr: ResizableArray[T], capacity: Int): Unit = {
96
- with on[OutOfBounds].panic
97
- val oldRaw = arr.rawContentPtr.get
98
- if (oldRaw.size != capacity) {
99
- val newRaw = array::allocate(capacity)
100
- oldRaw.copy(0, newRaw, 0, arr.size)
101
- arr.rawContentPtr.set(newRaw)
102
- }
59
+ val raw = arr.rawContentPtr.get
60
+ val tmp = raw.get(index1)
61
+ raw.set(index1, raw.get(index2))
62
+ raw.set(index2, tmp)
103
63
  }
104
64
 
105
65
  /// Change the resizable array to have exactly the given capacity.
@@ -110,16 +70,21 @@ def setCapacity[T](arr: ResizableArray[T], capacity: Int): Unit / Exception[OutO
110
70
  if (arr.size > capacity) {
111
71
  do raise(OutOfBounds(), "Cannot change capacity of ResizableArray to " ++ capacity.show ++ " below size " ++ arr.size.show)
112
72
  }
113
- arr.unsafeSetCapacity(capacity)
73
+ val oldRaw = arr.rawContentPtr.get
74
+ if (oldRaw.size != capacity) {
75
+ val newRaw = array::unsafeAllocate(capacity)
76
+ oldRaw.copy(0, newRaw, 0, arr.size)
77
+ arr.rawContentPtr.set(newRaw)
78
+ }
114
79
  }
115
80
 
116
81
  /// If the shrinkThreshold is reached, shrink by growFactor, otherwise do nothing
117
82
  ///
118
83
  /// O(n)
119
- def maybeShrink[T](arr: ResizableArray[T]): Unit = {
84
+ def maybeShrink[T](arr: ResizableArray[T]): Unit / Exception[OutOfBounds] = {
120
85
  if(arr.size.toDouble < arr.rawContentPtr.get.size.toDouble * shrinkThreshold) {
121
86
  val newCap = max(arr.size, (arr.rawContentPtr.get.size.toDouble / growFactor).ceil)
122
- arr.unsafeSetCapacity(newCap)
87
+ arr.setCapacity(newCap)
123
88
  }
124
89
  }
125
90
 
@@ -144,11 +109,11 @@ def setResizing[T](arr: ResizableArray[T], index: Int, value: T): Unit / Excepti
144
109
  do raise(OutOfBounds(), "Negative index " ++ index.show)
145
110
  }
146
111
  if (index < arr.size) {
147
- arr.rawContentPtr.get.unsafeSet(index, value)
112
+ arr.rawContentPtr.get.set(index, value)
148
113
  }
149
114
  ensureCapacity(arr, index + 1)
150
- arr.rawContentPtr.get.unsafeSet(index, value)
151
- arr.rawSizePtr.set(index + 1)
115
+ arr.rawContentPtr.get.set(index, value)
116
+ if (index >= arr.size) arr.rawSizePtr.set(index + 1)
152
117
  }
153
118
 
154
119
  /// Add a new element at the end of the resizable array.
@@ -166,9 +131,10 @@ def add[T](arr: ResizableArray[T], value: T): Int = {
166
131
  ///
167
132
  /// O(1) amortized, O(n) worst case
168
133
  def popRight[T](arr: ResizableArray[T]): T / Exception[OutOfBounds] = {
169
- arr.boundsCheck(arr.size - 1)
170
- arr.rawSizePtr.set(arr.size - 1)
171
- val r = arr.unsafeGet(arr.size)
134
+ val last = arr.size - 1
135
+ arr.boundsCheck(last)
136
+ val r = arr.rawContentPtr.get.get(last)
137
+ arr.rawSizePtr.set(last)
172
138
  arr.maybeShrink()
173
139
  r
174
140
  }
@@ -176,51 +142,51 @@ def popRight[T](arr: ResizableArray[T]): T / Exception[OutOfBounds] = {
176
142
 
177
143
  def foreachIndex[T](arr: ResizableArray[T]){ body: (Int, T) => Unit }: Unit = {
178
144
  each(0, arr.size) { i =>
179
- body(i, arr.rawContentPtr.get.unsafeGet(i))
145
+ body(i, arr.rawContentPtr.get.get(i))
180
146
  }
181
147
  }
182
- def foreachIndex[T](arr: ResizableArray[T]){ body: (Int, T) {Control} => Unit }: Unit = {
148
+ def foreachIndex[T](arr: ResizableArray[T]){ body: (Int, T) {Label} => Unit }: Unit = {
183
149
  each(0, arr.size) { (i){label} =>
184
- body(i, arr.rawContentPtr.get.unsafeGet(i)){label}
150
+ body(i, arr.rawContentPtr.get.get(i)){label}
185
151
  }
186
152
  }
187
153
  def foreach[T](arr: ResizableArray[T]){ body: T => Unit }: Unit = {
188
154
  each(0, arr.size) { i =>
189
- body(arr.rawContentPtr.get.unsafeGet(i))
155
+ body(arr.rawContentPtr.get.get(i))
190
156
  }
191
157
  }
192
- def foreach[T](arr: ResizableArray[T]){ body: (T) {Control} => Unit }: Unit = {
158
+ def foreach[T](arr: ResizableArray[T]){ body: (T) {Label} => Unit }: Unit = {
193
159
  each(0, arr.size) { (i){label} =>
194
- body(arr.rawContentPtr.get.unsafeGet(i)){label}
160
+ body(arr.rawContentPtr.get.get(i)){label}
195
161
  }
196
162
  }
197
- def foreachIndexReversed[T](arr: ResizableArray[T]){ body: (Int, T){Control} => Unit }: Unit = {
163
+ def foreachIndexReversed[T](arr: ResizableArray[T]){ body: (Int, T){Label} => Unit }: Unit = {
198
164
  var i = arr.size - 1
199
165
  loop { {l} =>
200
166
  if (i < 0) { l.break() }
201
- body(i, arr.rawContentPtr.get.unsafeGet(i)){l}
167
+ body(i, arr.rawContentPtr.get.get(i)){l}
202
168
  i = i - 1
203
169
  }
204
170
  }
205
171
  def foreachIndexReversed[T](arr: ResizableArray[T]){ body: (Int, T) => Unit }: Unit = {
206
172
  var i = arr.size - 1
207
173
  while(i >= 0) {
208
- body(i, arr.rawContentPtr.get.unsafeGet(i))
174
+ body(i, arr.rawContentPtr.get.get(i))
209
175
  i = i - 1
210
176
  }
211
177
  }
212
- def foreachReversed[T](arr: ResizableArray[T]){ body: (T){Control} => Unit }: Unit = {
178
+ def foreachReversed[T](arr: ResizableArray[T]){ body: (T){Label} => Unit }: Unit = {
213
179
  var i = arr.size - 1
214
180
  loop { {l} =>
215
181
  if (i < 0) { l.break() }
216
- body(arr.rawContentPtr.get.unsafeGet(i)){l}
182
+ body(arr.rawContentPtr.get.get(i)){l}
217
183
  i = i - 1
218
184
  }
219
185
  }
220
186
  def foreachReversed[T](arr: ResizableArray[T]){ body: T => Unit }: Unit = {
221
187
  var i = arr.size - 1
222
188
  while (i >= 0) {
223
- body(arr.rawContentPtr.get.unsafeGet(i))
189
+ body(arr.rawContentPtr.get.get(i))
224
190
  i = i - 1
225
191
  }
226
192
  }
@@ -228,7 +194,7 @@ def foreachReversed[T](arr: ResizableArray[T]){ body: T => Unit }: Unit = {
228
194
  def toList[T](arr: ResizableArray[T]): List[T] = {
229
195
  def go(i: Int, acc: List[T]): List[T] = {
230
196
  if (i < 0) { acc } else {
231
- go(i - 1, Cons(arr.unsafeGet(i), acc))
197
+ go(i - 1, Cons(arr.rawContentPtr.get.get(i), acc))
232
198
  }
233
199
  }
234
200
  go(arr.size - 1, Nil())
@@ -579,14 +579,14 @@ def each[A](seq: Seq[A]) { consume: (A) => Unit }: Unit = {
579
579
  }
580
580
  }
581
581
 
582
- def each[A](seq: Seq[A]) { f: (A) {Control} => Unit }: Unit = try {
582
+ def each[A](seq: Seq[A]) { f: (A) {Label} => Unit }: Unit = try {
583
583
  seq.each { (el) =>
584
- try { f(el) {inner} } with inner: Control {
584
+ try { f(el) {inner} } with inner: Label {
585
585
  def break() = outer.break()
586
586
  def continue() = ()
587
587
  }
588
588
  }
589
- } with outer: Control {
589
+ } with outer: Label {
590
590
  def break() = ()
591
591
  def continue() = ()
592
592
  }
@@ -627,14 +627,14 @@ def eachReverse[A](seq: Seq[A]) { consume: A => Unit }: Unit = {
627
627
  }
628
628
  }
629
629
 
630
- def eachReverse[A](seq: Seq[A]) { f: (A) {Control} => Unit }: Unit = try {
630
+ def eachReverse[A](seq: Seq[A]) { f: (A) {Label} => Unit }: Unit = try {
631
631
  seq.eachReverse { (el) =>
632
- try { f(el) {inner} } with inner: Control {
632
+ try { f(el) {inner} } with inner: Label {
633
633
  def break() = outer.break()
634
634
  def continue() = ()
635
635
  }
636
636
  }
637
- } with outer: Control {
637
+ } with outer: Label {
638
638
  def break() = ()
639
639
  def continue() = ()
640
640
  }
@@ -854,7 +854,7 @@ def map[A, B](seq: Seq[A]) { f: A => B }: Seq[B] = {
854
854
  result
855
855
  }
856
856
 
857
- def map[A, B](seq: Seq[A]) { f: (A) {Control} => B }: Seq[B] = {
857
+ def map[A, B](seq: Seq[A]) { f: (A) {Label} => B }: Seq[B] = {
858
858
  var result: Seq[B] = Empty()
859
859
  seq.each { (a) {label} => result = result.consRight(f(a) {label}) }
860
860
  result
@@ -15,8 +15,6 @@ effect emit[A](value: A): Unit
15
15
  /// The producer can decide to `stop` emitting values.
16
16
  effect read[A](): A / stop
17
17
 
18
- /// Signal from a producer to a consumer that there are no further values.
19
- effect stop(): Nothing
20
18
 
21
19
  /// Like `for[A, R]`, but ignores the result of the stream, and consequently
22
20
  /// works for any type. Use this to annotate the type of stream elements
@@ -50,25 +48,8 @@ def fix[T] { one: T => Unit / emit[T] } { stream: => Unit / emit[T] }: Unit =
50
48
  }
51
49
 
52
50
 
53
- def boundary { program: () => Unit / stop }: Unit = {
54
- returning::boundary[Unit]{program}
55
- ()
56
- }
57
-
58
- /// Run `program` forever until `stop` is thrown.
59
- def exhaustively { program: () => Unit / stop }: Unit =
60
- try {
61
- def go(): Unit = {
62
- program()
63
- go()
64
- }
65
- go()
66
- } with stop {
67
- ()
68
- }
69
-
70
51
  def many[A] { action: () => A / stop }: Unit / emit[A] =
71
- exhaustively { do emit(action()) }
52
+ loop { do emit(action()) }
72
53
 
73
54
  def some[A] { action: () => A / stop }: Unit / { emit[A], stop } = {
74
55
  do emit(action())
@@ -230,7 +211,7 @@ def zip[A, B] { stream1: () => Unit / emit[A] } { stream2: () => Unit / emit[B]
230
211
  with source[A] { stream1 }
231
212
  with source[B] { stream2 }
232
213
 
233
- exhaustively {
214
+ loop {
234
215
  action(do read(), do read())
235
216
  }
236
217
  }
@@ -241,7 +222,7 @@ def zipLongest[A, B] { stream1: () => Unit / emit[A] } { stream2: () => Unit / e
241
222
  with source[A] { stream1 }
242
223
  with source[B] { stream2 }
243
224
 
244
- exhaustively {
225
+ loop {
245
226
  try {
246
227
  val a = do read[A]()
247
228
  try {
@@ -245,7 +245,7 @@ def feed[R](string: String) { reader: () => R / read[Char] } =
245
245
 
246
246
  def each(string: String): Unit / emit[Char] =
247
247
  feed(string) {
248
- exhaustively {
248
+ loop {
249
249
  do emit(do read())
250
250
  }
251
251
  }
@@ -30,7 +30,7 @@ def stringBuffer[A] { prog: => A / StringBuffer }: A = {
30
30
  val bytes = fromString(str)
31
31
  ensureCapacity(bytes.size)
32
32
  bytes.foreach { b =>
33
- buffer.unsafeSet(pos, b)
33
+ buffer.set(pos, b)
34
34
  pos = pos + 1
35
35
  }
36
36
  resume(())
@@ -97,6 +97,7 @@
97
97
  declare ptr @malloc(i64)
98
98
  declare void @free(ptr)
99
99
  declare ptr @realloc(ptr, i64)
100
+ declare noalias ptr @calloc(i64, i64)
100
101
  declare void @memcpy(ptr, ptr, i64)
101
102
  declare i64 @llvm.ctlz.i64 (i64 , i1)
102
103
  declare i64 @llvm.fshr.i64(i64, i64, i64)
@@ -1481,7 +1481,7 @@ _stq.push([ "clickTrackerInit", "210318891", "395" ]);
1481
1481
  <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202552.js" id="jetpack-stats-js" defer="defer" data-wp-strategy="defer"></script>
1482
1482
  <script type="text/javascript" id="cmplz-cookiebanner-js-extra">
1483
1483
  /* <![CDATA[ */
1484
- var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"127","version":"7.4.4.2","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://opensource.org/wp-json/complianz/v1/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"22","cookie_path":"/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https://opensource.org/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=127","page_links":{"eu":{"cookie-statement":{"title":"","url":"https://opensource.org/blog/top-open-source-licenses-in-2025"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1484
+ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"127","version":"7.4.4.2","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://opensource.org/wp-json/complianz/v1/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"22","cookie_path":"/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https://opensource.org/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=127","page_links":{"eu":{"cookie-statement":{"title":"","url":"https://opensource.org/peru_to_ms_spanish-php"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1485
1485
  //# sourceURL=cmplz-cookiebanner-js-extra
1486
1486
  /* ]]> */
1487
1487
  </script>
@@ -1497,11 +1497,11 @@ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(
1497
1497
  /* ]]> */
1498
1498
  </script>
1499
1499
 
1500
- <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9b29139d7f9e565f',t:'MTc2NjUwNTY3Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1500
+ <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9b2918211ce7e7eb',t:'MTc2NjUwNTg2MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1501
1501
  </html>
1502
1502
  <!--
1503
- generated 10 seconds ago
1504
- generated in 0.716 seconds
1505
- served from batcache in 0.004 seconds
1506
- expires in 290 seconds
1503
+ generated 99 seconds ago
1504
+ generated in 0.712 seconds
1505
+ served from batcache in 0.003 seconds
1506
+ expires in 201 seconds
1507
1507
  -->
@@ -1483,7 +1483,7 @@ _stq.push([ "clickTrackerInit", "210318891", "373" ]);
1483
1483
  <script data-service="jetpack-statistics" data-category="statistics" type="text/plain" data-cmplz-src="https://stats.wp.com/e-202552.js" id="jetpack-stats-js" defer="defer" data-wp-strategy="defer"></script>
1484
1484
  <script type="text/javascript" id="cmplz-cookiebanner-js-extra">
1485
1485
  /* <![CDATA[ */
1486
- var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"127","version":"7.4.4.2","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://opensource.org/wp-json/complianz/v1/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"22","cookie_path":"/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https://opensource.org/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=127","page_links":{"eu":{"cookie-statement":{"title":"","url":"https://opensource.org/meeting-minutes/minutes20090610"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1486
+ var complianz = {"prefix":"cmplz_","user_banner_id":"1","set_cookies":[],"block_ajax_content":"","banner_version":"127","version":"7.4.4.2","store_consent":"","do_not_track_enabled":"1","consenttype":"optin","region":"eu","geoip":"","dismiss_timeout":"","disable_cookiebanner":"1","soft_cookiewall":"","dismiss_on_scroll":"","cookie_expiry":"365","url":"https://opensource.org/wp-json/complianz/v1/","locale":"lang=en&locale=en_US","set_cookies_on_root":"","cookie_domain":"","current_policy_id":"22","cookie_path":"/","categories":{"statistics":"statistics","marketing":"marketing"},"tcf_active":"","placeholdertext":"Click to accept {category} cookies and enable this content","css_file":"https://opensource.org/wp-content/uploads/complianz/css/banner-{banner_id}-{type}.css?v=127","page_links":{"eu":{"cookie-statement":{"title":"","url":"https://opensource.org/peru_to_ms_spanish-php"}}},"tm_categories":"","forceEnableStats":"","preview":"","clean_cookies":"","aria_label":"Click to accept {category} cookies and enable this content"};
1487
1487
  //# sourceURL=cmplz-cookiebanner-js-extra
1488
1488
  /* ]]> */
1489
1489
  </script>
@@ -1499,11 +1499,9 @@ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(
1499
1499
  /* ]]> */
1500
1500
  </script>
1501
1501
 
1502
- <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9b29139c3d1a565f',t:'MTc2NjUwNTY3Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1502
+ <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9b2918202b82e7eb',t:'MTc2NjUwNTg2MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1503
1503
  </html>
1504
1504
  <!--
1505
- generated 13 seconds ago
1506
- generated in 0.846 seconds
1507
- served from batcache in 0.004 seconds
1508
- expires in 287 seconds
1505
+ generated in 0.697 seconds
1506
+ 170535 bytes batcached for 300 seconds
1509
1507
  -->
@@ -1497,11 +1497,11 @@ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(
1497
1497
  /* ]]> */
1498
1498
  </script>
1499
1499
 
1500
- <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9b29139cbe49565f',t:'MTc2NjUwNTY3Ng=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1500
+ <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9b2918209c3ae7eb',t:'MTc2NjUwNTg2MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
1501
1501
  </html>
1502
1502
  <!--
1503
- generated 79 seconds ago
1503
+ generated 217 seconds ago
1504
1504
  generated in 0.758 seconds
1505
1505
  served from batcache in 0.003 seconds
1506
- expires in 221 seconds
1506
+ expires in 83 seconds
1507
1507
  -->
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effekt-lang/effekt",
3
3
  "author": "Jonathan Brachthäuser",
4
- "version": "0.56.0",
4
+ "version": "0.57.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/effekt-lang/effekt.git"