firefly-compiler 0.4.79 → 0.4.81

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.
Files changed (164) hide show
  1. package/.hintrc +4 -4
  2. package/.vscode/settings.json +4 -4
  3. package/bin/Release.ff +153 -153
  4. package/bin/firefly.mjs +1 -1
  5. package/compiler/Builder.ff +257 -257
  6. package/compiler/Compiler.ff +227 -227
  7. package/compiler/Dependencies.ff +187 -187
  8. package/compiler/DependencyLock.ff +17 -17
  9. package/compiler/Inference.ff +2 -1
  10. package/compiler/JsEmitter.ff +940 -946
  11. package/compiler/LspHook.ff +202 -202
  12. package/compiler/Main.ff +3 -3
  13. package/compiler/ModuleCache.ff +178 -178
  14. package/compiler/Tokenizer.ff +1 -1
  15. package/compiler/Unification.ff +1 -1
  16. package/compiler/Workspace.ff +88 -88
  17. package/core/.firefly/include/package-lock.json +564 -564
  18. package/core/.firefly/include/package.json +5 -5
  19. package/core/.firefly/include/prepare.sh +1 -1
  20. package/core/.firefly/package.ff +2 -2
  21. package/core/Array.ff +265 -265
  22. package/core/Atomic.ff +64 -64
  23. package/core/Box.ff +7 -7
  24. package/core/BrowserSystem.ff +40 -40
  25. package/core/BuildSystem.ff +148 -148
  26. package/core/Crypto.ff +96 -96
  27. package/core/Equal.ff +36 -36
  28. package/core/Float.ff +25 -0
  29. package/core/HttpClient.ff +148 -148
  30. package/core/JsSystem.ff +69 -69
  31. package/core/Json.ff +434 -434
  32. package/core/List.ff +486 -486
  33. package/core/Lock.ff +144 -144
  34. package/core/NodeSystem.ff +216 -216
  35. package/core/Ordering.ff +161 -161
  36. package/core/Path.ff +401 -401
  37. package/core/Random.ff +134 -134
  38. package/core/RbMap.ff +216 -216
  39. package/core/Show.ff +43 -43
  40. package/core/SourceLocation.ff +68 -68
  41. package/core/Stream.ff +9 -9
  42. package/core/Task.ff +149 -141
  43. package/core/Try.ff +25 -4
  44. package/experimental/benchmarks/ListGrab.ff +23 -23
  45. package/experimental/benchmarks/ListGrab.java +55 -55
  46. package/experimental/benchmarks/Pyrotek45.ff +30 -30
  47. package/experimental/benchmarks/Pyrotek45.java +64 -64
  48. package/experimental/bidirectional/Bidi.ff +88 -88
  49. package/experimental/random/Index.ff +53 -53
  50. package/experimental/random/Process.ff +120 -120
  51. package/experimental/random/Scrape.ff +51 -51
  52. package/experimental/random/Symbols.ff +73 -73
  53. package/experimental/random/Tensor.ff +52 -52
  54. package/experimental/random/Units.ff +36 -36
  55. package/experimental/s3/S3TestAuthorizationHeader.ff +39 -39
  56. package/experimental/s3/S3TestPut.ff +16 -16
  57. package/experimental/tests/TestJson.ff +26 -26
  58. package/firefly.sh +0 -0
  59. package/fireflysite/.firefly/package.ff +4 -4
  60. package/fireflysite/CommunityOverview.ff +20 -20
  61. package/fireflysite/CountingButtonDemo.ff +58 -58
  62. package/fireflysite/DocumentParser.ff +331 -217
  63. package/fireflysite/ExamplesOverview.ff +40 -40
  64. package/fireflysite/FrontPage.ff +344 -360
  65. package/fireflysite/{GuideIntroduction.ff → GettingStarted.ff} +45 -52
  66. package/fireflysite/Guide.ff +442 -411
  67. package/fireflysite/Main.ff +151 -137
  68. package/fireflysite/MatchingPasswordsDemo.ff +82 -82
  69. package/fireflysite/PackagesOverview.ff +49 -49
  70. package/fireflysite/PostgresqlDemo.ff +34 -34
  71. package/fireflysite/ReferenceAll.ff +18 -0
  72. package/fireflysite/ReferenceIntroduction.ff +11 -0
  73. package/fireflysite/Styles.ff +567 -495
  74. package/fireflysite/Test.ff +46 -0
  75. package/fireflysite/assets/markdown/reference/BaseTypes.md +209 -0
  76. package/fireflysite/assets/markdown/reference/EmittedJavascript.md +66 -0
  77. package/fireflysite/assets/markdown/reference/Exceptions.md +101 -0
  78. package/fireflysite/assets/markdown/reference/FunctionsAndMethods.md +338 -0
  79. package/fireflysite/assets/markdown/reference/JavascriptInterop.md +134 -0
  80. package/fireflysite/assets/markdown/reference/ModulesAndPackages.md +162 -0
  81. package/fireflysite/assets/markdown/reference/OldStructuredConcurrency.md +48 -0
  82. package/fireflysite/assets/markdown/reference/PatternMatching.md +224 -0
  83. package/fireflysite/assets/markdown/reference/StatementsAndExpressions.md +86 -0
  84. package/fireflysite/assets/markdown/reference/StructuredConcurrency.md +99 -0
  85. package/fireflysite/assets/markdown/reference/TraitsAndInstances.md +100 -0
  86. package/fireflysite/assets/markdown/reference/UserDefinedTypes.md +184 -0
  87. package/fireflysite/assets/markdown/{ControlFlow.md → scratch/ControlFlow.md} +136 -136
  88. package/fireflysite/assets/markdown/scratch/Toc.md +41 -0
  89. package/lsp/.firefly/package.ff +1 -1
  90. package/lsp/CompletionHandler.ff +828 -828
  91. package/lsp/Handler.ff +714 -714
  92. package/lsp/HoverHandler.ff +79 -79
  93. package/lsp/LanguageServer.ff +272 -272
  94. package/lsp/SignatureHelpHandler.ff +55 -55
  95. package/lsp/SymbolHandler.ff +181 -181
  96. package/lsp/TestReferences.ff +17 -17
  97. package/lsp/TestReferencesCase.ff +7 -7
  98. package/lsp/stderr.txt +1 -1
  99. package/lsp/stdout.txt +34 -34
  100. package/lux/.firefly/package.ff +1 -1
  101. package/lux/Css.ff +648 -648
  102. package/lux/CssTest.ff +48 -48
  103. package/lux/Lux.ff +593 -487
  104. package/lux/LuxEvent.ff +116 -116
  105. package/lux/Main.ff +123 -123
  106. package/lux/Main2.ff +143 -143
  107. package/lux/TestDry.ff +27 -0
  108. package/output/js/ff/compiler/Builder.mjs +47 -47
  109. package/output/js/ff/compiler/Dependencies.mjs +3 -3
  110. package/output/js/ff/compiler/Inference.mjs +2 -2
  111. package/output/js/ff/compiler/JsEmitter.mjs +18 -72
  112. package/output/js/ff/compiler/Main.mjs +4 -4
  113. package/output/js/ff/compiler/ModuleCache.mjs +4 -4
  114. package/output/js/ff/core/Array.mjs +59 -59
  115. package/output/js/ff/core/Atomic.mjs +36 -36
  116. package/output/js/ff/core/BrowserSystem.mjs +11 -11
  117. package/output/js/ff/core/BuildSystem.mjs +30 -30
  118. package/output/js/ff/core/Crypto.mjs +40 -40
  119. package/output/js/ff/core/Float.mjs +50 -0
  120. package/output/js/ff/core/HttpClient.mjs +56 -56
  121. package/output/js/ff/core/Json.mjs +147 -147
  122. package/output/js/ff/core/List.mjs +50 -50
  123. package/output/js/ff/core/Lock.mjs +97 -97
  124. package/output/js/ff/core/NodeSystem.mjs +87 -87
  125. package/output/js/ff/core/Ordering.mjs +8 -8
  126. package/output/js/ff/core/Path.mjs +231 -231
  127. package/output/js/ff/core/Random.mjs +56 -56
  128. package/output/js/ff/core/Task.mjs +71 -39
  129. package/output/js/ff/core/Try.mjs +98 -4
  130. package/package.json +1 -1
  131. package/postgresql/Pg.ff +1 -1
  132. package/rpc/.firefly/package.ff +1 -1
  133. package/rpc/Rpc.ff +70 -70
  134. package/s3/.firefly/package.ff +1 -1
  135. package/s3/S3.ff +94 -94
  136. package/unsafejs/UnsafeJs.ff +19 -19
  137. package/vscode/LICENSE.txt +21 -21
  138. package/vscode/Prepublish.ff +15 -15
  139. package/vscode/README.md +16 -16
  140. package/vscode/client/package.json +22 -22
  141. package/vscode/client/src/extension.ts +104 -104
  142. package/vscode/icons/firefly-icon.svg +10 -10
  143. package/vscode/language-configuration.json +61 -61
  144. package/vscode/package-lock.json +3623 -3623
  145. package/vscode/package.json +1 -1
  146. package/vscode/snippets.json +241 -241
  147. package/vscode/syntaxes/firefly-markdown-injection.json +45 -45
  148. package/webserver/.firefly/include/package-lock.json +22 -22
  149. package/webserver/.firefly/include/package.json +5 -5
  150. package/webserver/.firefly/package.ff +2 -2
  151. package/webserver/WebServer.ff +685 -685
  152. package/websocket/.firefly/package.ff +1 -1
  153. package/websocket/WebSocket.ff +131 -131
  154. package/fireflysite/GuideAll.ff +0 -21
  155. package/fireflysite/GuideBaseTypes.ff +0 -168
  156. package/fireflysite/GuideControlFlow.ff +0 -212
  157. package/fireflysite/assets/markdown/Example.md +0 -78
  158. /package/fireflysite/assets/{NotoSansMono-Regular.ttf → font/NotoSansMono-Regular.ttf} +0 -0
  159. /package/fireflysite/assets/{NunitoSans-VariableFont_YTLC,opsz,wdth,wght.ttf → font/NunitoSans-VariableFont_YTLC,opsz,wdth,wght.ttf} +0 -0
  160. /package/fireflysite/assets/{autocomplete-small.png → image/autocomplete-small.png} +0 -0
  161. /package/fireflysite/assets/{autocomplete.png → image/autocomplete.png} +0 -0
  162. /package/fireflysite/assets/{edit-time-error.png → image/edit-time-error.png} +0 -0
  163. /package/fireflysite/assets/{firefly-logo-notext.png → image/firefly-logo-notext.png} +0 -0
  164. /package/fireflysite/assets/{firefly-logo-yellow.png → image/firefly-logo-yellow.png} +0 -0
package/core/Random.ff CHANGED
@@ -1,134 +1,134 @@
1
- class Random {}
2
-
3
- // Using Alea PRNG by Johannes Baagøe <baagoe@baagoe.com>, 2010
4
- // Typical use: Random.seedInstant(system.task().now())
5
-
6
- newFromInt(seed: Int): Random {
7
- newFromFloat(seed.toFloat())
8
- }
9
-
10
- newFromFloat(seed: Float): Random {
11
- let buffer = Buffer.new(8)
12
- buffer.setFloat64(0, seed)
13
- newFromBuffer(buffer)
14
- }
15
-
16
- newFromInstant(seed: Instant): Random {
17
- newFromFloat(seed.since1970.seconds)
18
- }
19
-
20
- newFromBuffer(buffer: Buffer): Random
21
- target js sync """
22
- var n = 0xefc8249d;
23
- function mash(data) {
24
- for(var i = 0; i < data.byteLength; i++) {
25
- n += data.getUint8(i);
26
- var h = 0.02519603282416938 * n;
27
- n = h >>> 0;
28
- h -= n;
29
- h *= n;
30
- n = h >>> 0;
31
- h -= n;
32
- n += h * 0x100000000; // 2^32
33
- }
34
- return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
35
- }
36
- var space = new DataView(new Uint8Array([32]).buffer);
37
- var r = {
38
- s0: mash(space),
39
- s1: mash(space),
40
- s2: mash(space),
41
- c: 1,
42
- spareGauss: NaN
43
- };
44
- r.s0 -= mash(buffer_);
45
- if(r.s0 < 0) r.s0 += 1;
46
- r.s1 -= mash(buffer_);
47
- if(r.s1 < 0) r.s1 += 1;
48
- r.s2 -= mash(buffer_);
49
- if(r.s2 < 0) r.s2 += 1;
50
- return r;
51
- """
52
-
53
- extend self: Random {
54
-
55
- copy(): Random
56
- target js sync """
57
- return {...self_};
58
- """
59
-
60
- nextInt(from: Int, until: Int): Int
61
- target js sync """
62
- return Random_nextFloat(self_, from_, until_) | 0;
63
- """
64
-
65
- nextFloat(from: Float, until: Float): Float
66
- target js sync """
67
- var t = 2091639 * self_.s0 + self_.c * 2.3283064365386963e-10; // 2^-32
68
- self_.s0 = self_.s1;
69
- self_.s1 = self_.s2;
70
- var uniform = self_.s2 = t - (self_.c = t | 0);
71
- return from_ + uniform * (until_ - from_);
72
- """
73
-
74
- nextBool(): Bool {
75
- self.nextInt(0, 2) == 0
76
- }
77
-
78
- nextBytes(buffer: Buffer, start: Int, stop: Int): Unit {
79
- start.until(stop).each {i =>
80
- buffer.setUint8(i, self.nextInt(0, 256))
81
- }
82
- }
83
-
84
- nextGauss(mean: Float, standardDeviation: Float): Float
85
- target js sync """
86
- if(!isNaN(self_.spareGauss)) {
87
- const result = self_.spareGauss * standardDeviation_ + mean_;
88
- self_.spareGauss = NaN;
89
- return result;
90
- } else {
91
- let u = 0.5, v = 0.5, s = 0.5;
92
- do {
93
- u = Random_nextFloat(self_, 0.0, 1.0) * 2 - 1;
94
- v = Random_nextFloat(self_, 0.0, 1.0) * 2 - 1;
95
- s = u * u + v * v;
96
- } while(s >= 1 || s == 0);
97
- s = Math.sqrt(-2.0 * Math.log(s) / s);
98
- self_.spareGauss = v * s;
99
- return mean_ + standardDeviation_ * u * s;
100
- }
101
- """
102
-
103
- shuffleArray[T](array: Array[T]): Unit {
104
- 0.until(array.size() - 1).each {i =>
105
- let j = self.nextInt(0, array.size() - i) + i
106
- let value = array.grab(i)
107
- array.set(i, array.grab(j))
108
- array.set(j, value)
109
- }
110
- }
111
-
112
- shuffleList[T](list: List[T]): List[T] {
113
- let array = list.toArray()
114
- self.shuffleArray(list.toArray())
115
- array.drain()
116
- }
117
-
118
- sampleArray[T](count: Int, array: Array[T], body: T => Unit): Unit {
119
- self.shuffleList(array.toList()).takeFirst(count).each {body(_)}
120
- }
121
-
122
- sampleList[T](count: Int, list: List[T]): List[T] {
123
- self.shuffleList(list).takeFirst(count)
124
- }
125
-
126
- grabArray[T](array: Array[T]): T {
127
- array.grab(self.nextInt(0, array.size()))
128
- }
129
-
130
- grabList[T](list: List[T]): T {
131
- list.grab(self.nextInt(0, list.size()))
132
- }
133
-
134
- }
1
+ class Random {}
2
+
3
+ // Using Alea PRNG by Johannes Baagøe <baagoe@baagoe.com>, 2010
4
+ // Typical use: Random.seedInstant(system.task().now())
5
+
6
+ newFromInt(seed: Int): Random {
7
+ newFromFloat(seed.toFloat())
8
+ }
9
+
10
+ newFromFloat(seed: Float): Random {
11
+ let buffer = Buffer.new(8)
12
+ buffer.setFloat64(0, seed)
13
+ newFromBuffer(buffer)
14
+ }
15
+
16
+ newFromInstant(seed: Instant): Random {
17
+ newFromFloat(seed.since1970.seconds)
18
+ }
19
+
20
+ newFromBuffer(buffer: Buffer): Random
21
+ target js sync """
22
+ var n = 0xefc8249d;
23
+ function mash(data) {
24
+ for(var i = 0; i < data.byteLength; i++) {
25
+ n += data.getUint8(i);
26
+ var h = 0.02519603282416938 * n;
27
+ n = h >>> 0;
28
+ h -= n;
29
+ h *= n;
30
+ n = h >>> 0;
31
+ h -= n;
32
+ n += h * 0x100000000; // 2^32
33
+ }
34
+ return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
35
+ }
36
+ var space = new DataView(new Uint8Array([32]).buffer);
37
+ var r = {
38
+ s0: mash(space),
39
+ s1: mash(space),
40
+ s2: mash(space),
41
+ c: 1,
42
+ spareGauss: NaN
43
+ };
44
+ r.s0 -= mash(buffer_);
45
+ if(r.s0 < 0) r.s0 += 1;
46
+ r.s1 -= mash(buffer_);
47
+ if(r.s1 < 0) r.s1 += 1;
48
+ r.s2 -= mash(buffer_);
49
+ if(r.s2 < 0) r.s2 += 1;
50
+ return r;
51
+ """
52
+
53
+ extend self: Random {
54
+
55
+ copy(): Random
56
+ target js sync """
57
+ return {...self_};
58
+ """
59
+
60
+ nextInt(from: Int, until: Int): Int
61
+ target js sync """
62
+ return Random_nextFloat(self_, from_, until_) | 0;
63
+ """
64
+
65
+ nextFloat(from: Float, until: Float): Float
66
+ target js sync """
67
+ var t = 2091639 * self_.s0 + self_.c * 2.3283064365386963e-10; // 2^-32
68
+ self_.s0 = self_.s1;
69
+ self_.s1 = self_.s2;
70
+ var uniform = self_.s2 = t - (self_.c = t | 0);
71
+ return from_ + uniform * (until_ - from_);
72
+ """
73
+
74
+ nextBool(): Bool {
75
+ self.nextInt(0, 2) == 0
76
+ }
77
+
78
+ nextBytes(buffer: Buffer, start: Int, stop: Int): Unit {
79
+ start.until(stop).each {i =>
80
+ buffer.setUint8(i, self.nextInt(0, 256))
81
+ }
82
+ }
83
+
84
+ nextGauss(mean: Float, standardDeviation: Float): Float
85
+ target js sync """
86
+ if(!isNaN(self_.spareGauss)) {
87
+ const result = self_.spareGauss * standardDeviation_ + mean_;
88
+ self_.spareGauss = NaN;
89
+ return result;
90
+ } else {
91
+ let u = 0.5, v = 0.5, s = 0.5;
92
+ do {
93
+ u = Random_nextFloat(self_, 0.0, 1.0) * 2 - 1;
94
+ v = Random_nextFloat(self_, 0.0, 1.0) * 2 - 1;
95
+ s = u * u + v * v;
96
+ } while(s >= 1 || s == 0);
97
+ s = Math.sqrt(-2.0 * Math.log(s) / s);
98
+ self_.spareGauss = v * s;
99
+ return mean_ + standardDeviation_ * u * s;
100
+ }
101
+ """
102
+
103
+ shuffleArray[T](array: Array[T]): Unit {
104
+ 0.until(array.size() - 1).each {i =>
105
+ let j = self.nextInt(0, array.size() - i) + i
106
+ let value = array.grab(i)
107
+ array.set(i, array.grab(j))
108
+ array.set(j, value)
109
+ }
110
+ }
111
+
112
+ shuffleList[T](list: List[T]): List[T] {
113
+ let array = list.toArray()
114
+ self.shuffleArray(list.toArray())
115
+ array.drain()
116
+ }
117
+
118
+ sampleArray[T](count: Int, array: Array[T], body: T => Unit): Unit {
119
+ self.shuffleList(array.toList()).takeFirst(count).each {body(_)}
120
+ }
121
+
122
+ sampleList[T](count: Int, list: List[T]): List[T] {
123
+ self.shuffleList(list).takeFirst(count)
124
+ }
125
+
126
+ grabArray[T](array: Array[T]): T {
127
+ array.grab(self.nextInt(0, array.size()))
128
+ }
129
+
130
+ grabList[T](list: List[T]): T {
131
+ list.grab(self.nextInt(0, list.size()))
132
+ }
133
+
134
+ }