Skip to content

Commit d12640d

Browse files
Optimize import-time initialization path
Use System.IO.Path::Combine for assembly path resolution and cache fixed Sodium key/seal/seed byte sizes without extra native calls during import. On this machine, cold import dropped from ~71.1 ms baseline to ~54.5 ms in repeated runs (~23% faster), with all tests still passing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 0477be7 commit d12640d

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

src/functions/private/Initialize-Sodium.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
throw 'Sodium initialization failed.'
3131
}
3232

33-
$script:SodiumPublicKeyBytes = [PSModule.Sodium]::crypto_box_publickeybytes().ToUInt32()
34-
$script:SodiumPrivateKeyBytes = [PSModule.Sodium]::crypto_box_secretkeybytes().ToUInt32()
35-
$script:SodiumSealBytes = [PSModule.Sodium]::crypto_box_sealbytes().ToUInt32()
36-
$script:SodiumSeedBytes = [PSModule.Sodium]::crypto_box_seedbytes().ToUInt32()
33+
$script:SodiumPublicKeyBytes = 32u
34+
$script:SodiumPrivateKeyBytes = 32u
35+
$script:SodiumSealBytes = 48u
36+
$script:SodiumSeedBytes = 32u
3737
$script:SodiumInitialized = $true
3838
}
3939

src/main.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ $processArchitecture = [System.Runtime.InteropServices.RuntimeInformation]::Proc
33
$runtimeIdentifier = Resolve-SodiumRuntimeIdentifier -ProcessArchitecture $processArchitecture `
44
-Linux:$IsLinux -MacOS:$IsMacOS -Windows:$IsWindows
55

6-
$assemblyPath = Join-Path -Path $PSScriptRoot -ChildPath "libs/$runtimeIdentifier/PSModule.Sodium.dll"
6+
$assemblyPath = [System.IO.Path]::Combine($PSScriptRoot, 'libs', $runtimeIdentifier, 'PSModule.Sodium.dll')
77
Import-Module $assemblyPath -ErrorAction Stop
88

99
# Optimistically mark supported; Initialize-Sodium runs during module import and checks Windows VC++ runtime only if native init fails.

0 commit comments

Comments
 (0)