@@ -17,14 +17,43 @@ import (
1717//go:embed sqlc-codegen-python.wasm
1818var pythonCodeGen []byte
1919
20- func pythonGenerate (req * plugin.CodeGenRequest ) (* plugin.CodeGenResponse , error ) {
20+ //go:embed sqlc-codegen-python.module
21+ var pythonModule []byte
22+
23+ var engine * wasmtime.Engine
24+ var linker * wasmtime.Linker
25+ var module * wasmtime.Module
26+
27+ func init () {
28+ var err error
29+ engine = wasmtime .NewEngine ()
30+ module , err = wasmtime .NewModuleDeserialize (engine , pythonModule )
31+ if err != nil {
32+ panic (err )
33+ }
34+
35+ // out, err := module.Serialize()
36+ // if err != nil {
37+ // panic(err)
38+ // }
39+
40+ // err = os.WriteFile("sqlc-codegen-python.module", out, 0644)
41+ // if err != nil {
42+ // panic(err)
43+ // }
44+
45+ linker = wasmtime .NewLinker (engine )
46+ if err := linker .DefineWasi (); err != nil {
47+ panic (err )
48+ }
49+ }
50+
51+ func pythonGenerate (cctx context.Context , req * plugin.CodeGenRequest ) (* plugin.CodeGenResponse , error ) {
2152 stdinBlob , err := req .MarshalVT ()
2253 if err != nil {
2354 return nil , err
2455 }
2556
26- cctx := context .Background ()
27-
2857 ctx , task := trace .NewTask (cctx , "pythonGenerate" )
2958 defer task .End ()
3059
@@ -42,14 +71,6 @@ func pythonGenerate(req *plugin.CodeGenRequest) (*plugin.CodeGenResponse, error)
4271 return nil , fmt .Errorf ("write file: %w" , err )
4372 }
4473
45- engine := wasmtime .NewEngine ()
46- linker := wasmtime .NewLinker (engine )
47-
48- // Link WASI
49- if err := linker .DefineWasi (); err != nil {
50- return nil , fmt .Errorf ("define wasi: %w" , err )
51- }
52-
5374 // Configure WASI imports to write stdout into a file.
5475 wasiConfig := wasmtime .NewWasiConfig ()
5576 wasiConfig .SetStdinFile (stdinPath )
@@ -75,12 +96,12 @@ func pythonGenerate(req *plugin.CodeGenRequest) (*plugin.CodeGenResponse, error)
7596 // return fmt.Errorf("read file: %w", err)
7697 // }
7798
78- moduRegion := trace .StartRegion (ctx , "wasmtime.NewModule" )
79- module , err := wasmtime .NewModule (store .Engine , pythonCodeGen )
80- moduRegion .End ()
81- if err != nil {
82- return nil , fmt .Errorf ("define wasi: %w" , err )
83- }
99+ // moduRegion := trace.StartRegion(ctx, "wasmtime.NewModule")
100+ // module, err := wasmtime.NewModule(store.Engine, pythonCodeGen)
101+ // moduRegion.End()
102+ // if err != nil {
103+ // return nil, fmt.Errorf("define wasi: %w", err)
104+ // }
84105
85106 linkRegion := trace .StartRegion (ctx , "linker.Instantiate" )
86107 instance , err := linker .Instantiate (store , module )
0 commit comments