goscript 0.2.4 → 0.2.6

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 (117) hide show
  1. package/README.md +8 -8
  2. package/cmd/go_js_wasm_exec/main.go +1 -1
  3. package/cmd/go_js_wasm_exec/main_test.go +1 -1
  4. package/cmd/goscript/cmd-compile.go +9 -1
  5. package/cmd/goscript/cmd-test.go +1 -1
  6. package/cmd/goscript/cmd_compile_test.go +44 -0
  7. package/cmd/goscript/deps.go +1 -1
  8. package/cmd/goscript-wasm/main.go +2 -2
  9. package/compiler/compile-request.go +19 -0
  10. package/compiler/compile_bench_test.go +121 -0
  11. package/compiler/compliance_test.go +17 -1
  12. package/compiler/config.go +2 -0
  13. package/compiler/gotest/result.go +1 -1
  14. package/compiler/gotest/runner.go +2 -2
  15. package/compiler/gotest/runner_test.go +4 -7
  16. package/compiler/index.test.ts +28 -0
  17. package/compiler/index.ts +32 -16
  18. package/compiler/lowering.go +1238 -194
  19. package/compiler/lowering_bench_test.go +4 -0
  20. package/compiler/override-facts.go +1 -1
  21. package/compiler/package-graph.go +92 -0
  22. package/compiler/package-graph_test.go +113 -0
  23. package/compiler/runtime-contract.go +1 -1
  24. package/compiler/semantic-model.go +32 -0
  25. package/compiler/skeleton_test.go +241 -15
  26. package/compiler/wasm/compile.go +1 -1
  27. package/compiler/wasm/compile_test.go +1 -1
  28. package/dist/compiler/index.d.ts +4 -0
  29. package/dist/compiler/index.js +26 -15
  30. package/dist/compiler/index.js.map +1 -1
  31. package/dist/gs/database/sql/driver/index.d.ts +165 -0
  32. package/dist/gs/database/sql/driver/index.js +432 -0
  33. package/dist/gs/database/sql/driver/index.js.map +1 -0
  34. package/dist/gs/encoding/binary/index.d.ts +71 -0
  35. package/dist/gs/encoding/binary/index.js +778 -0
  36. package/dist/gs/encoding/binary/index.js.map +1 -0
  37. package/dist/gs/fmt/fmt.js +156 -57
  38. package/dist/gs/fmt/fmt.js.map +1 -1
  39. package/dist/gs/github.com/klauspost/cpuid/v2/index.d.ts +11 -0
  40. package/dist/gs/github.com/klauspost/cpuid/v2/index.js +28 -0
  41. package/dist/gs/github.com/klauspost/cpuid/v2/index.js.map +1 -0
  42. package/dist/gs/github.com/pkg/errors/errors.d.ts +0 -2
  43. package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
  44. package/dist/gs/github.com/pkg/errors/index.d.ts +2 -1
  45. package/dist/gs/github.com/pkg/errors/index.js +1 -1
  46. package/dist/gs/github.com/pkg/errors/index.js.map +1 -1
  47. package/dist/gs/github.com/pkg/errors/stack.d.ts +8 -19
  48. package/dist/gs/github.com/pkg/errors/stack.js +26 -61
  49. package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
  50. package/dist/gs/golang.org/x/crypto/cryptobyte/asn1/index.d.ts +19 -0
  51. package/dist/gs/golang.org/x/crypto/cryptobyte/asn1/index.js +25 -0
  52. package/dist/gs/golang.org/x/crypto/cryptobyte/asn1/index.js.map +1 -0
  53. package/dist/gs/golang.org/x/crypto/cryptobyte/index.d.ts +104 -0
  54. package/dist/gs/golang.org/x/crypto/cryptobyte/index.js +1107 -0
  55. package/dist/gs/golang.org/x/crypto/cryptobyte/index.js.map +1 -0
  56. package/dist/gs/golang.org/x/crypto/internal/alias/index.d.ts +3 -0
  57. package/dist/gs/golang.org/x/crypto/internal/alias/index.js +39 -0
  58. package/dist/gs/golang.org/x/crypto/internal/alias/index.js.map +1 -0
  59. package/dist/gs/runtime/runtime.d.ts +6 -1
  60. package/dist/gs/runtime/runtime.js +15 -8
  61. package/dist/gs/runtime/runtime.js.map +1 -1
  62. package/dist/gs/runtime/trace/index.d.ts +8 -5
  63. package/dist/gs/runtime/trace/index.js +324 -23
  64. package/dist/gs/runtime/trace/index.js.map +1 -1
  65. package/dist/gs/slices/slices.d.ts +2 -1
  66. package/dist/gs/slices/slices.js +9 -3
  67. package/dist/gs/slices/slices.js.map +1 -1
  68. package/dist/gs/sort/search.gs.d.ts +3 -1
  69. package/dist/gs/sort/search.gs.js +18 -53
  70. package/dist/gs/sort/search.gs.js.map +1 -1
  71. package/dist/gs/sync/sync.d.ts +1 -1
  72. package/dist/gs/sync/sync.js +3 -0
  73. package/dist/gs/sync/sync.js.map +1 -1
  74. package/dist/gs/time/time.d.ts +22 -29
  75. package/dist/gs/time/time.js +111 -32
  76. package/dist/gs/time/time.js.map +1 -1
  77. package/dist/gs/unsafe/unsafe.d.ts +3 -2
  78. package/dist/gs/unsafe/unsafe.js.map +1 -1
  79. package/go.mod +7 -5
  80. package/go.sum +12 -26
  81. package/gs/database/sql/driver/index.test.ts +88 -0
  82. package/gs/database/sql/driver/index.ts +675 -0
  83. package/gs/database/sql/driver/meta.json +3 -0
  84. package/gs/database/sql/driver/parity.json +144 -0
  85. package/gs/encoding/binary/index.test.ts +239 -0
  86. package/gs/encoding/binary/index.ts +999 -0
  87. package/gs/encoding/binary/meta.json +9 -0
  88. package/gs/encoding/binary/parity.json +72 -0
  89. package/gs/fmt/fmt.test.ts +28 -0
  90. package/gs/fmt/fmt.ts +198 -61
  91. package/gs/fmt/meta.json +2 -1
  92. package/gs/github.com/klauspost/cpuid/v2/index.ts +38 -0
  93. package/gs/github.com/klauspost/cpuid/v2/meta.json +3 -0
  94. package/gs/github.com/pkg/errors/errors.ts +1 -2
  95. package/gs/github.com/pkg/errors/index.ts +2 -1
  96. package/gs/github.com/pkg/errors/stack.ts +34 -62
  97. package/gs/golang.org/x/crypto/cryptobyte/asn1/index.test.ts +19 -0
  98. package/gs/golang.org/x/crypto/cryptobyte/asn1/index.ts +29 -0
  99. package/gs/golang.org/x/crypto/cryptobyte/index.test.ts +255 -0
  100. package/gs/golang.org/x/crypto/cryptobyte/index.ts +1441 -0
  101. package/gs/golang.org/x/crypto/cryptobyte/meta.json +3 -0
  102. package/gs/golang.org/x/crypto/internal/alias/index.test.ts +40 -0
  103. package/gs/golang.org/x/crypto/internal/alias/index.ts +40 -0
  104. package/gs/runtime/runtime.test.ts +16 -0
  105. package/gs/runtime/runtime.ts +17 -9
  106. package/gs/runtime/trace/index.test.ts +113 -14
  107. package/gs/runtime/trace/index.ts +384 -34
  108. package/gs/runtime/trace/meta.json +1 -0
  109. package/gs/slices/slices.test.ts +24 -1
  110. package/gs/slices/slices.ts +14 -4
  111. package/gs/sort/meta.json +1 -0
  112. package/gs/sort/search.gs.ts +20 -5
  113. package/gs/sync/sync.ts +4 -1
  114. package/gs/time/time.test.ts +79 -2
  115. package/gs/time/time.ts +133 -33
  116. package/gs/unsafe/unsafe.ts +4 -2
  117. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../gs/golang.org/x/crypto/cryptobyte/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ export declare function AnyOverlap(x: $.Bytes, y: $.Bytes): boolean;
3
+ export declare function InexactOverlap(x: $.Bytes, y: $.Bytes): boolean;
@@ -0,0 +1,39 @@
1
+ import * as $ from '@goscript/builtin/index.js';
2
+ // AnyOverlap reports whether x and y share memory at any (not necessarily
3
+ // corresponding) index. The memory beyond the slice length is ignored.
4
+ //
5
+ // This mirrors the upstream pointer comparison without reflect or unsafe by
6
+ // using GoScript synthetic byte addresses. Those addresses are stride separated
7
+ // per backing array, so slices over distinct backings can never compare as
8
+ // overlapping and slices over a shared backing compare by element offset, which
9
+ // reproduces the Go semantics the crypto cipher modes rely on.
10
+ export function AnyOverlap(x, y) {
11
+ const xLen = $.len(x);
12
+ const yLen = $.len(y);
13
+ if (xLen === 0 || yLen === 0) {
14
+ return false;
15
+ }
16
+ const xFirst = $.indexByteAddress(x, 0, 1);
17
+ const xLast = $.indexByteAddress(x, xLen - 1, 1);
18
+ const yFirst = $.indexByteAddress(y, 0, 1);
19
+ const yLast = $.indexByteAddress(y, yLen - 1, 1);
20
+ return xFirst <= yLast && yFirst <= xLast;
21
+ }
22
+ // InexactOverlap reports whether x and y share memory at any non-corresponding
23
+ // index. The memory beyond the slice length is ignored. Note that x and y can
24
+ // have different lengths and still not have any inexact overlap.
25
+ //
26
+ // InexactOverlap can be used to implement the requirements of the crypto/cipher
27
+ // AEAD, Block, BlockMode and Stream interfaces.
28
+ export function InexactOverlap(x, y) {
29
+ const xLen = $.len(x);
30
+ const yLen = $.len(y);
31
+ if (xLen === 0 || yLen === 0) {
32
+ return false;
33
+ }
34
+ if ($.indexByteAddress(x, 0, 1) === $.indexByteAddress(y, 0, 1)) {
35
+ return false;
36
+ }
37
+ return AnyOverlap(x, y);
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../gs/golang.org/x/crypto/internal/alias/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAA;AAE/C,0EAA0E;AAC1E,uEAAuE;AACvE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,2EAA2E;AAC3E,gFAAgF;AAChF,+DAA+D;AAC/D,MAAM,UAAU,UAAU,CAAC,CAAU,EAAE,CAAU;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAChD,OAAO,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAA;AAC3C,CAAC;AAED,+EAA+E;AAC/E,8EAA8E;AAC9E,iEAAiE;AACjE,EAAE;AACF,gFAAgF;AAChF,gDAAgD;AAChD,MAAM,UAAU,cAAc,CAAC,CAAU,EAAE,CAAU;IACnD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACrB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACzB,CAAC"}
@@ -42,13 +42,18 @@ export declare class MemStats {
42
42
  Alloc: number;
43
43
  TotalAlloc: number;
44
44
  Sys: number;
45
+ HeapAlloc: number;
46
+ HeapSys: number;
47
+ HeapInuse: number;
48
+ StackInuse: number;
49
+ StackSys: number;
45
50
  Lookups: number;
46
51
  Mallocs: number;
47
52
  Frees: number;
48
53
  constructor();
49
54
  private updateMemoryStats;
50
55
  }
51
- export declare function ReadMemStats(m: MemStats): void;
56
+ export declare function ReadMemStats(m: MemStats | $.VarRef<MemStats> | null): void;
52
57
  export interface Error {
53
58
  Error(): string;
54
59
  }
@@ -142,6 +142,11 @@ export class MemStats {
142
142
  Alloc = 0; // bytes allocated and not yet freed
143
143
  TotalAlloc = 0; // bytes allocated (even if freed)
144
144
  Sys = 0; // bytes obtained from system
145
+ HeapAlloc = 0; // bytes allocated and not yet freed on the heap
146
+ HeapSys = 0; // bytes obtained from system for the heap
147
+ HeapInuse = 0; // bytes in in-use heap spans
148
+ StackInuse = 0; // bytes in stack spans
149
+ StackSys = 0; // bytes obtained from system for stacks
145
150
  Lookups = 0; // number of pointer lookups
146
151
  Mallocs = 0; // number of mallocs
147
152
  Frees = 0; // number of frees
@@ -151,24 +156,26 @@ export class MemStats {
151
156
  this.updateMemoryStats();
152
157
  }
153
158
  updateMemoryStats() {
154
- // Use performance.memory if available (Chrome/Edge)
155
- if (typeof performance !== 'undefined' && performance.memory) {
156
- const mem = performance.memory;
157
- this.Alloc = mem.usedJSHeapSize || 0;
158
- this.Sys = mem.totalJSHeapSize || 0;
159
- this.TotalAlloc = this.Alloc; // Simplified
160
- }
159
+ updateMemoryStats(this);
161
160
  }
162
161
  }
163
162
  // ReadMemStats populates m with memory allocator statistics
164
163
  export function ReadMemStats(m) {
165
- // Update the provided MemStats object with current values
164
+ m = $.pointerValue(m);
165
+ updateMemoryStats(m);
166
+ }
167
+ function updateMemoryStats(m) {
166
168
  if (typeof performance !== 'undefined' && performance.memory) {
167
169
  const mem = performance.memory;
168
170
  m.Alloc = mem.usedJSHeapSize || 0;
169
171
  m.Sys = mem.totalJSHeapSize || 0;
170
172
  m.TotalAlloc = m.Alloc; // Simplified
171
173
  }
174
+ m.HeapAlloc = m.Alloc;
175
+ m.HeapSys = m.Sys;
176
+ m.HeapInuse = m.Alloc;
177
+ m.StackInuse = 0;
178
+ m.StackSys = 0;
172
179
  }
173
180
  // TypeAssertionError represents a failed type assertion
174
181
  export class TypeAssertionError {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../gs/runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../gs/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,16 @@ export declare class Task {
7
7
  End(): void;
8
8
  }
9
9
  export declare class Region {
10
+ private task;
11
+ private name;
12
+ constructor(task?: number, name?: string);
10
13
  End(): void;
11
14
  }
12
- export declare function NewTask(pctx: context.Context | null, _taskType: string): [context.Context | null, Task];
13
- export declare function Log(_ctx: context.Context | null, category: string, message: string): void;
14
- export declare function Logf(_ctx: context.Context | null, _category: string, _format: string, ..._args: unknown[]): void;
15
- export declare function WithRegion(_ctx: context.Context | null, _regionType: string, fn: (() => void) | null): void;
16
- export declare function StartRegion(_ctx: context.Context | null, _regionType: string): Region;
15
+ export declare function NewTask(pctx: context.Context | null, taskType: string): [context.Context | null, Task];
16
+ export declare function Log(ctx: context.Context | null, category: string, message: string): void;
17
+ export declare function Logf(ctx: context.Context | null, category: string, format: string, ...args: unknown[]): void;
18
+ export declare function WithRegion(ctx: context.Context | null, regionType: string, fn: (() => void) | null): void;
19
+ export declare function StartRegion(ctx: context.Context | null, regionType: string): Region;
17
20
  export declare function IsEnabled(): boolean;
18
21
  export declare function Start(w: io.Writer | $.VarRef<io.Writer> | null): $.GoError;
19
22
  export declare function Stop(): void;
@@ -1,50 +1,351 @@
1
1
  import * as $ from '@goscript/builtin/index.js';
2
2
  import * as context from '@goscript/context/index.js';
3
3
  import * as errors from '@goscript/errors/index.js';
4
+ import * as fmt from '@goscript/fmt/index.js';
5
+ // traceContextKey keys the active *Task stored in a context by NewTask.
4
6
  class traceContextKey {
5
7
  }
6
- const traceState = {
7
- nextTaskID: 0,
8
- };
9
- const unsupportedTraceError = errors.New('runtime/trace: execution tracing is unsupported in GoScript');
8
+ // Go execution trace v2 event type codes (iota order from the runtime spec).
9
+ // GoScript emits only the user-task subset plus the minimal proc/goroutine
10
+ // status needed for the upstream trace reader to bind a running context.
11
+ const evEventBatch = 1;
12
+ const evStrings = 4;
13
+ const evString = 5;
14
+ const evFrequency = 8;
15
+ const evProcStatus = 13;
16
+ const evGoStatus = 25;
17
+ const evUserTaskBegin = 40;
18
+ const evUserTaskEnd = 41;
19
+ const evUserRegionBegin = 42;
20
+ const evUserRegionEnd = 43;
21
+ const evUserLog = 44;
22
+ // procRunning and goRunning are the running status codes for the synthetic P
23
+ // and G that own every GoScript user event (GoScript has no real scheduler).
24
+ const procRunning = 1;
25
+ const goRunning = 2;
26
+ // traceGen, traceProc, and traceGoroutine are the fixed generation, P, and G
27
+ // identities for the single synthetic GoScript execution context.
28
+ const traceGen = 1;
29
+ const traceMID = 0;
30
+ const traceProc = 0;
31
+ const traceGoroutine = 1;
32
+ // traceFreqHz is the timestamp frequency reported to the reader. GoScript
33
+ // records nanosecond timestamps, so the frequency is one billion ticks/sec
34
+ // and the reader's tick->nanosecond conversion is the identity.
35
+ const traceFreqHz = 1_000_000_000;
36
+ // maxBatchData bounds the post-header data block of every per-M batch. The
37
+ // trace v2 reader rejects any batch whose declared size exceeds 64 KiB
38
+ // (tracev2.MaxBatchSize = 64<<10), so a realistic capture must split its string
39
+ // and event records across multiple batches. The cap sits below the hard limit
40
+ // to leave margin for the next record, which is written in full before the size
41
+ // is rechecked.
42
+ const maxBatchData = 60 * 1024;
43
+ // maxEventBytes is a safe upper bound on the encoded size of one user event
44
+ // (kind byte plus a handful of base-128 varints; strings are interned, so no
45
+ // inline payload). The event loop flushes the current batch before its data
46
+ // block can grow within this margin of maxBatchData.
47
+ const maxEventBytes = 128;
48
+ // recEvent kinds.
49
+ const kindTaskBegin = 0;
50
+ const kindTaskEnd = 1;
51
+ const kindRegionBegin = 2;
52
+ const kindRegionEnd = 3;
53
+ const kindLog = 4;
54
+ function newRecorder() {
55
+ return { enabled: false, writer: null, startTs: 0, events: [] };
56
+ }
57
+ // rec is the active capture. nextTaskID is process-global and monotonic like
58
+ // the Go runtime task counter, so it persists across Start/Stop cycles.
59
+ let rec = newRecorder();
60
+ let nextTaskID = 0;
61
+ // nowNs reads the high-resolution monotonic clock in nanoseconds, the same
62
+ // source that backs time.Time monotonic readings.
63
+ function nowNs() {
64
+ if (typeof performance !== 'undefined' && performance.now) {
65
+ return performance.now() * 1_000_000;
66
+ }
67
+ return globalThis.Date.now() * 1_000_000;
68
+ }
69
+ function contextKey() {
70
+ return $.interfaceValue($.markAsStructValue(new traceContextKey()), 'trace.traceContextKey');
71
+ }
72
+ // taskIDFromContext returns the active task ID carried by ctx, or 0 when ctx
73
+ // carries no task (the background task).
74
+ function taskIDFromContext(ctx) {
75
+ if (ctx == null) {
76
+ return 0;
77
+ }
78
+ const value = ctx.Value(contextKey());
79
+ if (value instanceof Task) {
80
+ return value.id;
81
+ }
82
+ return 0;
83
+ }
84
+ function record(kind, task, parent, s0, s1) {
85
+ rec.events.push({ kind, ts: nowNs(), task, parent, s0, s1 });
86
+ }
10
87
  export class Task {
11
88
  id;
12
89
  constructor(id = 0) {
13
90
  this.id = id;
14
91
  }
15
- End() { }
92
+ End() {
93
+ if (rec.enabled) {
94
+ record(kindTaskEnd, this.id, 0, '', '');
95
+ }
96
+ }
16
97
  }
17
98
  export class Region {
18
- End() { }
99
+ task;
100
+ name;
101
+ constructor(task = 0, name = '') {
102
+ this.task = task;
103
+ this.name = name;
104
+ }
105
+ End() {
106
+ if (rec.enabled) {
107
+ record(kindRegionEnd, this.task, 0, this.name, '');
108
+ }
109
+ }
19
110
  }
20
- export function NewTask(pctx, _taskType) {
111
+ export function NewTask(pctx, taskType) {
21
112
  const parent = pctx ?? context.Background();
22
- const task = new Task(++traceState.nextTaskID);
23
- return [
24
- context.WithValue(parent, $.interfaceValue(new traceContextKey(), 'trace.traceContextKey'), $.interfaceValue(task, '*trace.Task')),
25
- task,
26
- ];
113
+ const task = new Task(++nextTaskID);
114
+ if (rec.enabled) {
115
+ record(kindTaskBegin, task.id, taskIDFromContext(pctx), taskType, '');
116
+ }
117
+ return [context.WithValue(parent, contextKey(), task), task];
27
118
  }
28
- export function Log(_ctx, category, message) {
29
- void category;
30
- void message;
119
+ export function Log(ctx, category, message) {
120
+ if (rec.enabled) {
121
+ record(kindLog, taskIDFromContext(ctx), 0, category, message);
122
+ }
31
123
  }
32
- export function Logf(_ctx, _category, _format, ..._args) { }
33
- export function WithRegion(_ctx, _regionType, fn) {
34
- fn?.();
124
+ export function Logf(ctx, category, format, ...args) {
125
+ if (rec.enabled) {
126
+ Log(ctx, category, fmt.Sprintf(format, ...args));
127
+ }
128
+ }
129
+ export function WithRegion(ctx, regionType, fn) {
130
+ const task = taskIDFromContext(ctx);
131
+ if (rec.enabled) {
132
+ record(kindRegionBegin, task, 0, regionType, '');
133
+ }
134
+ try {
135
+ fn?.();
136
+ }
137
+ finally {
138
+ if (rec.enabled) {
139
+ record(kindRegionEnd, task, 0, regionType, '');
140
+ }
141
+ }
35
142
  }
36
- export function StartRegion(_ctx, _regionType) {
37
- return new Region();
143
+ export function StartRegion(ctx, regionType) {
144
+ const task = taskIDFromContext(ctx);
145
+ if (rec.enabled) {
146
+ record(kindRegionBegin, task, 0, regionType, '');
147
+ }
148
+ return new Region(task, regionType);
38
149
  }
39
150
  export function IsEnabled() {
40
- return false;
151
+ return rec.enabled;
41
152
  }
42
153
  export function Start(w) {
43
154
  const writer = $.pointerValueOrNil(w);
44
155
  if (writer == null) {
45
156
  return errors.New('runtime/trace: nil trace writer');
46
157
  }
47
- return unsupportedTraceError;
158
+ if (rec.enabled) {
159
+ return errors.New('runtime/trace: tracing already enabled');
160
+ }
161
+ rec = newRecorder();
162
+ rec.enabled = true;
163
+ rec.writer = writer;
164
+ rec.startTs = nowNs();
165
+ return null;
166
+ }
167
+ export function Stop() {
168
+ if (!rec.enabled) {
169
+ return;
170
+ }
171
+ const writer = rec.writer;
172
+ const buffered = rec;
173
+ rec = newRecorder();
174
+ const payload = encodeTrace(buffered);
175
+ if (writer != null) {
176
+ writer.Write(payload);
177
+ }
178
+ }
179
+ // putUvarint appends value to out as a base-128 varint. It uses arithmetic
180
+ // rather than bit operations so values above 2^32 (nanosecond timestamps)
181
+ // encode correctly.
182
+ function putUvarint(out, value) {
183
+ let v = Math.floor(value);
184
+ if (v < 0) {
185
+ v = 0;
186
+ }
187
+ while (v >= 0x80) {
188
+ out.push((v % 0x80) + 0x80);
189
+ v = Math.floor(v / 0x80);
190
+ }
191
+ out.push(v);
192
+ }
193
+ function utf8Bytes(s) {
194
+ if (typeof TextEncoder !== 'undefined') {
195
+ return new TextEncoder().encode(s);
196
+ }
197
+ const out = new Uint8Array(s.length);
198
+ for (let i = 0; i < s.length; i++) {
199
+ out[i] = s.charCodeAt(i) & 0xff;
200
+ }
201
+ return out;
202
+ }
203
+ // appendBatch frames data as a trace v2 per-M batch (EvEventBatch header plus
204
+ // the generation, M, base timestamp, and length prefix).
205
+ function appendBatch(out, data) {
206
+ out.push(evEventBatch);
207
+ putUvarint(out, traceGen);
208
+ putUvarint(out, traceMID);
209
+ putUvarint(out, 0);
210
+ putUvarint(out, data.length);
211
+ for (const b of data) {
212
+ out.push(b);
213
+ }
214
+ }
215
+ // encodeTrace serializes the buffered user events as a single-generation Go
216
+ // trace v2 byte stream containing only the user-task subset.
217
+ function encodeTrace(r) {
218
+ const out = [];
219
+ // Header: "go 1.22 trace\x00\x00\x00". The reader selects the Go 1.22 event
220
+ // table, whose final event is EvUserLog, covering every event GoScript emits.
221
+ const header = 'go 1.22 trace\x00\x00\x00';
222
+ for (let i = 0; i < header.length; i++) {
223
+ out.push(header.charCodeAt(i) & 0xff);
224
+ }
225
+ // Frequency batch (required): ticks per second.
226
+ const freq = [evFrequency];
227
+ putUvarint(freq, traceFreqHz);
228
+ appendBatch(out, freq);
229
+ // Intern the strings referenced by user events.
230
+ const stringIDs = new Map();
231
+ const internedStrings = [];
232
+ const intern = (s) => {
233
+ let id = stringIDs.get(s);
234
+ if (id === undefined) {
235
+ id = internedStrings.length + 1;
236
+ stringIDs.set(s, id);
237
+ internedStrings.push(s);
238
+ }
239
+ return id;
240
+ };
241
+ for (const ev of r.events) {
242
+ if (ev.kind === kindTaskBegin ||
243
+ ev.kind === kindRegionBegin ||
244
+ ev.kind === kindRegionEnd) {
245
+ intern(ev.s0);
246
+ }
247
+ else if (ev.kind === kindLog) {
248
+ intern(ev.s0);
249
+ intern(ev.s1);
250
+ }
251
+ }
252
+ // Strings batches. The reader concatenates the string dictionary across every
253
+ // EvStrings batch in the generation, so a large table splits into multiple
254
+ // batches whose data blocks each stay under maxBatchData. Each EvString record
255
+ // (tag, id, length, bytes) stays whole within one batch.
256
+ if (internedStrings.length > 0) {
257
+ let strings = [evStrings];
258
+ for (let i = 0; i < internedStrings.length; i++) {
259
+ const bytes = utf8Bytes(internedStrings[i]);
260
+ const recordSize = 1 + 10 + 10 + bytes.length;
261
+ if (strings.length > 1 && strings.length + recordSize > maxBatchData) {
262
+ appendBatch(out, strings);
263
+ strings = [evStrings];
264
+ }
265
+ strings.push(evString);
266
+ putUvarint(strings, i + 1);
267
+ putUvarint(strings, bytes.length);
268
+ for (const b of bytes) {
269
+ strings.push(b);
270
+ }
271
+ }
272
+ appendBatch(out, strings);
273
+ }
274
+ // Event batches: synthetic running P and G, then any user events in order. The
275
+ // running context is emitted even with no user events, so every capture is a
276
+ // complete single-generation trace the reader accepts rather than a bare
277
+ // header plus frequency batch. User events split across multiple per-M batches
278
+ // so no data block exceeds maxBatchData. The reader resets its delta clock to
279
+ // each batch's base timestamp (0 here), so flushing resets lastTs to 0 and the
280
+ // first event of every batch re-emits its absolute offset as the delta.
281
+ let data = [];
282
+ let lastTs = 0;
283
+ const emitDelta = (ts) => {
284
+ const offset = Math.max(0, Math.floor(ts - r.startTs));
285
+ const dt = Math.max(0, offset - lastTs);
286
+ lastTs = offset;
287
+ putUvarint(data, dt);
288
+ };
289
+ const flushEventBatch = () => {
290
+ appendBatch(out, data);
291
+ data = [];
292
+ lastTs = 0;
293
+ };
294
+ // EvProcStatus(dt, p, status): bind the running P to the context.
295
+ data.push(evProcStatus);
296
+ putUvarint(data, 0);
297
+ putUvarint(data, traceProc);
298
+ putUvarint(data, procRunning);
299
+ // EvGoStatus(dt, g, m, status): bind the running G to the context.
300
+ data.push(evGoStatus);
301
+ putUvarint(data, 0);
302
+ putUvarint(data, traceGoroutine);
303
+ putUvarint(data, traceMID);
304
+ putUvarint(data, goRunning);
305
+ for (const ev of r.events) {
306
+ if (data.length + maxEventBytes > maxBatchData) {
307
+ flushEventBatch();
308
+ }
309
+ switch (ev.kind) {
310
+ case kindTaskBegin:
311
+ data.push(evUserTaskBegin);
312
+ emitDelta(ev.ts);
313
+ putUvarint(data, ev.task);
314
+ putUvarint(data, ev.parent);
315
+ putUvarint(data, intern(ev.s0));
316
+ putUvarint(data, 0);
317
+ break;
318
+ case kindTaskEnd:
319
+ data.push(evUserTaskEnd);
320
+ emitDelta(ev.ts);
321
+ putUvarint(data, ev.task);
322
+ putUvarint(data, 0);
323
+ break;
324
+ case kindRegionBegin:
325
+ data.push(evUserRegionBegin);
326
+ emitDelta(ev.ts);
327
+ putUvarint(data, ev.task);
328
+ putUvarint(data, intern(ev.s0));
329
+ putUvarint(data, 0);
330
+ break;
331
+ case kindRegionEnd:
332
+ data.push(evUserRegionEnd);
333
+ emitDelta(ev.ts);
334
+ putUvarint(data, ev.task);
335
+ putUvarint(data, intern(ev.s0));
336
+ putUvarint(data, 0);
337
+ break;
338
+ case kindLog:
339
+ data.push(evUserLog);
340
+ emitDelta(ev.ts);
341
+ putUvarint(data, ev.task);
342
+ putUvarint(data, intern(ev.s0));
343
+ putUvarint(data, intern(ev.s1));
344
+ putUvarint(data, 0);
345
+ break;
346
+ }
347
+ }
348
+ flushEventBatch();
349
+ return new Uint8Array(out);
48
350
  }
49
- export function Stop() { }
50
351
  //# sourceMappingURL=index.js.map