Skip to content

Commit

Permalink
add an offline precompile workload
Browse files Browse the repository at this point in the history
  • Loading branch information
IanButterworth committed Nov 20, 2024
1 parent b7f5aa8 commit 86fb137
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 1 deletion.
4 changes: 3 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ LoggingExtras = "e6f89c97-d47a-5376-807f-9c37f3926c36"
MbedTLS = "739be429-bea8-5141-9913-cc70e7f3736d"
NetworkOptions = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
OpenSSL = "4d8831e6-92b7-49fb-bdf8-b643e874388c"
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
SimpleBufferStream = "777ac1f9-54b0-4bf8-805c-2214025038e7"
Sockets = "6462fe0b-24de-5631-8697-dd941f90decc"
Expand All @@ -27,6 +28,7 @@ ExceptionUnwrapping = "0.1"
LoggingExtras = "0.4.9,1"
MbedTLS = "0.6.8, 0.7, 1"
OpenSSL = "1.3"
PrecompileTools = "1.2.1"
SimpleBufferStream = "1.1"
URIs = "1.3"
julia = "1.6"
Expand All @@ -37,9 +39,9 @@ Deno_jll = "04572ae6-984a-583e-9378-9577a1c2574d"
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
NetworkOptions = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
NetworkOptions = "ca575930-c2e3-43a9-ace4-1e988b2c1908"

[targets]
test = ["BufferedStreams", "Deno_jll", "Distributed", "InteractiveUtils", "JSON", "Test", "Unitful", "NetworkOptions"]
5 changes: 5 additions & 0 deletions src/HTTP.jl
Original file line number Diff line number Diff line change
Expand Up @@ -631,4 +631,9 @@ function Base.parse(::Type{T}, str::AbstractString)::T where T <: Message
return m
end

# only run if precompiling
if ccall(:jl_generating_output, Cint, ()) == 1
include("precompile.jl")
end

end # module
24 changes: 24 additions & 0 deletions src/precompile.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using PrecompileTools: @setup_workload, @compile_workload

@setup_workload begin
# TODO: Are these all safe to call here and bake into the pkgimage?
Connections.__init__()
MultiPartParsing.__init__()
Parsers.__init__()
ConnectionRequest.__init__()

gzip_data(data::String) = read(GzipCompressorStream(IOBuffer(data)))

# random port in the dynamic/private range (49152–65535) which are are
# least likely to be used by well-known services
_port = 57813

server = HTTP.serve!("0.0.0.0", _port; verbose = -1) do req
HTTP.Response(200, ["Content-Encoding" => "gzip"], gzip_data("dummy response"))
end
@compile_workload begin
HTTP.get("http://localhost:$_port")
end
HTTP.forceclose(server)
server = nothing
end

0 comments on commit 86fb137

Please sign in to comment.