mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 14:12:26 -05:00 
			
		
		
		
	[experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863)
This allows for building GoToSocial with [SQLite transpiled to WASM](https://github.com/ncruces/go-sqlite3) and accessed through [Wazero](https://wazero.io/).
This commit is contained in:
		
					parent
					
						
							
								cce21c11cb
							
						
					
				
			
			
				commit
				
					
						1e7b32490d
					
				
			
		
					 398 changed files with 86174 additions and 684 deletions
				
			
		
							
								
								
									
										42
									
								
								vendor/github.com/tetratelabs/wazero/internal/filecache/compilationcache.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								vendor/github.com/tetratelabs/wazero/internal/filecache/compilationcache.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | |||
| package filecache | ||||
| 
 | ||||
| import ( | ||||
| 	"crypto/sha256" | ||||
| 	"io" | ||||
| ) | ||||
| 
 | ||||
| // Cache allows the compiler engine to skip compilation of wasm to machine code | ||||
| // where doing so is redundant for the same wasm binary and version of wazero. | ||||
| // | ||||
| // This augments the default in-memory cache of compiled functions, by | ||||
| // decoupling it from a wazero.Runtime instance. Concretely, a runtime loses | ||||
| // its cache once closed. This cache allows the runtime to rebuild its | ||||
| // in-memory cache quicker, significantly reducing first-hit penalty on a hit. | ||||
| // | ||||
| // See New for the example implementation. | ||||
| type Cache interface { | ||||
| 	// Get is called when the runtime is trying to get the cached compiled functions. | ||||
| 	// Implementations are supposed to return compiled function in io.Reader with ok=true | ||||
| 	// if the key exists on the cache. In the case of not-found, this should return | ||||
| 	// ok=false with err=nil. content.Close() is automatically called by | ||||
| 	// the caller of this Get. | ||||
| 	// | ||||
| 	// Note: the returned content won't go through the validation pass of Wasm binary | ||||
| 	// which is applied when the binary is compiled from scratch without cache hit. | ||||
| 	Get(key Key) (content io.ReadCloser, ok bool, err error) | ||||
| 	// | ||||
| 	// Add is called when the runtime is trying to add the new cache entry. | ||||
| 	// The given `content` must be un-modified, and returned as-is in Get method. | ||||
| 	// | ||||
| 	// Note: the `content` is ensured to be safe through the validation phase applied on the Wasm binary. | ||||
| 	Add(key Key, content io.Reader) (err error) | ||||
| 	// | ||||
| 	// Delete is called when the cache on the `key` returned by Get is no longer usable, and | ||||
| 	// must be purged. Specifically, this is called happens when the wazero's version has been changed. | ||||
| 	// For example, that is when there's a difference between the version of compiling wazero and the | ||||
| 	// version of the currently used wazero. | ||||
| 	Delete(key Key) (err error) | ||||
| } | ||||
| 
 | ||||
| // Key represents the 256-bit unique identifier assigned to each cache entry. | ||||
| type Key = [sha256.Size]byte | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue