From c826be423cb740d9688e152a1d37ae56fbe54646 Mon Sep 17 00:00:00 2001 From: KristofferC Date: Fri, 24 Mar 2023 10:16:16 +0100 Subject: [PATCH 1/3] add `showerror` overloads for exceptions --- src/DocOpt.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/DocOpt.jl b/src/DocOpt.jl index fb7e7a7..09c84c0 100644 --- a/src/DocOpt.jl +++ b/src/DocOpt.jl @@ -22,10 +22,12 @@ end struct DocOptLanguageError <: Exception msg::AbstractString end +Base.showerror(io::IO, e::DocOptLanguageError) = print(io, "DocOptLanguageError: ", e.usage) struct DocOptExit <: Exception usage::AbstractString end +Base.showerror(io::IO, e::DocOptExit) = print(io, "DocOptExit: ", e.usage) abstract type Pattern end abstract type LeafPattern <: Pattern end From 920c0141a166468b101b045db9d6efe490de1ac0 Mon Sep 17 00:00:00 2001 From: KristofferC Date: Fri, 24 Mar 2023 10:16:40 +0100 Subject: [PATCH 2/3] remove outdated `__precompile__()` call --- src/DocOpt.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/DocOpt.jl b/src/DocOpt.jl index 09c84c0..402fccb 100644 --- a/src/DocOpt.jl +++ b/src/DocOpt.jl @@ -1,5 +1,3 @@ -__precompile__() - module DocOpt export docopt From e78e4236cadf41808b2f85ef99e52b98f2de3d23 Mon Sep 17 00:00:00 2001 From: KristofferC Date: Fri, 24 Mar 2023 10:20:45 +0100 Subject: [PATCH 3/3] add a precompile workload This changes the timings on the example: ``` # Before: # 1.8: 2.83 # 1.9: 2.63 # After: # 1.8: 2.18 # 1.9: 0.48 ``` --- Project.toml | 4 +++- src/DocOpt.jl | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 7795d66..5d08254 100644 --- a/Project.toml +++ b/Project.toml @@ -1,13 +1,15 @@ name = "DocOpt" uuid = "968ba79b-81e4-546f-ab3a-2eecfa62a9db" -version = "0.5" +version = "0.5.1" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" +SnoopPrecompile = "66db9d55-30c0-4569-8b51-7e840670fc0c" [compat] julia = "1.3" +SnoopPrecompile = "1.0.3" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/src/DocOpt.jl b/src/DocOpt.jl index 402fccb..a81f8d0 100644 --- a/src/DocOpt.jl +++ b/src/DocOpt.jl @@ -606,4 +606,30 @@ function docopt(doc::AbstractString, end end +using SnoopPrecompile + +@precompile_setup begin + doc = """Naval Fate. + + Usage: + naval_fate.jl ship new ... + naval_fate.jl ship move [--speed=] + naval_fate.jl ship shoot + naval_fate.jl mine (set|remove) [--moored|--drifting] + naval_fate.jl -h | --help + naval_fate.jl --version + + Options: + -h --help Show this screen. + --version Show version. + --speed= Speed in knots [default: 10]. + --moored Moored (anchored) mine. + --drifting Drifting mine. + + """ + @precompile_all_calls begin + docopt(doc, ["ship", "new", "BoatyMcBoatFace"]; version=v"2.0.0") + end +end + end # DocOpt