gkappler / CombinedParsers.jl

Compiled parser combinators and regular expressions in pure julia
MIT License
78 stars 10 forks source link

Precompile fails on julia v1.6 #20

Closed JonasIsensee closed 3 years ago

JonasIsensee commented 3 years ago

Hi, I just noticed that CombinedParsers no longer precompiles on v1.6.

julia> using CombinedParsers
[ Info: Precompiling CombinedParsers [5ae71ed2-6f8a-4ed1-b94f-e14e8158f19e]
WARNING: could not import Printf.ini_hex into DoubleFloats
WARNING: could not import Printf.ini_HEX into DoubleFloats
ERROR: LoadError: LoadError: LoadError: Any <: CombinedParsers.CombinedParser. Fix with `push!(x|CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#118#119", CombinedParsers.Sequence{Tuple{String, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, SubString}, CombinedParsers.Transformation{CombinedParsers.Regexp.var"#112#114", CombinedParsers.Sequence{Tuple{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#104#105", CombinedParsers.Sequence{Tuple{CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#102#103", CombinedParsers.Repeat{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser}, CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}}, Vector{Any}, Tuple{Vector{_A} where _A, CombinedParsers.CombinedParser, Vector{_A} where _A}}, Vector{Any}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, Vector{CombinedParsers.CombinedParser}}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}, CombinedParsers.Repeat{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{Char, CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#102#103", CombinedParsers.Repeat{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser}, CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}}, Vector{Any}, Tuple{Vector{_A} where _A, CombinedParsers.CombinedParser, Vector{_A} where _A}}, Vector{Any}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, Vector{CombinedParsers.CombinedParser}}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}}, Vector{Any}, Tuple{Char, CombinedParsers.CombinedParser}}, Vector{Any}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, Vector{CombinedParsers.CombinedParser}}}, Vector{Any}, Tuple{CombinedParsers.CombinedParser, Vector{CombinedParsers.CombinedParser}}}, Vector{Any}, Any}, CombinedParsers.Repeat{CombinedParsers.FlatMap{CombinedParsers.Sequence{Tuple{CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{String, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, Tuple{UInt32, UInt32}}}, Vector{Any}, Tuple{String, Tuple{UInt32, UInt32}}}, Vector{Any}, Tuple{UInt32, UInt32}}, Vector{Any}, Tuple{UInt32, UInt32}}, CombinedParsers.Optional{CombinedParsers.ConstantParser{1, Char, Char}, Union{CombinedParsers.MatchState, CombinedParsers.None}, Union{Missing, Char}}}, Vector{Any}, Tuple{Tuple{UInt32, UInt32}, Union{Missing, Char}}}, Tuple{var"#s54", var"#s53", var"#s52"} where {var"#s54", var"#s53", var"#s52"}, CombinedParsers.Regexp.var"#110#111", Vector{CombinedParsers.CombinedParser}}, Vector{Tuple{var"#s54", var"#s53", var"#s52"} where {var"#s54", var"#s53", var"#s52"}}, Vector{Vector{CombinedParsers.CombinedParser}}}}, Vector{Any}, Tuple{Any, Vector{Vector{CombinedParsers.CombinedParser}}}}, Vector{Any}, CombinedParsers.CombinedParser}, String}, Vector{Any}, Tuple{String, SubString, CombinedParsers.CombinedParser, String}}, Vector{Any}, Any}, Vector{Any}, Any},y)`.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] push!(x::CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser}, y_::CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#118#119", CombinedParsers.Sequence{Tuple{String, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, SubString}, CombinedParsers.Transformation{CombinedParsers.Regexp.var"#112#114", CombinedParsers.Sequence{Tuple{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#104#105", CombinedParsers.Sequence{Tuple{CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#102#103", CombinedParsers.Repeat{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser}, CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}}, Vector{Any}, Tuple{Vector{_A} where _A, CombinedParsers.CombinedParser, Vector{_A} where _A}}, Vector{Any}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, Vector{CombinedParsers.CombinedParser}}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}, CombinedParsers.Repeat{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{Char, CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#102#103", CombinedParsers.Repeat{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser}, CombinedParsers.Transformation{CombinedParsers.Regexp.var"#42#46", CombinedParsers.Repeat{CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}, Vector{Tuple{Int64, Any}}, Vector{CombinedParsers.CombinedParser{CombinedParsers.MatchState, CombinedParsers.Always}}}, Vector{Tuple{Int64, Any}}, Vector{_A} where _A}}, Vector{Any}, Tuple{Vector{_A} where _A, CombinedParsers.CombinedParser, Vector{_A} where _A}}, Vector{Any}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, Vector{CombinedParsers.CombinedParser}}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, CombinedParsers.CombinedParser}}, Vector{Any}, Tuple{Char, CombinedParsers.CombinedParser}}, Vector{Any}, CombinedParsers.CombinedParser}, Vector{Vector{Any}}, Vector{CombinedParsers.CombinedParser}}}, Vector{Any}, Tuple{CombinedParsers.CombinedParser, Vector{CombinedParsers.CombinedParser}}}, Vector{Any}, Any}, CombinedParsers.Repeat{CombinedParsers.FlatMap{CombinedParsers.Sequence{Tuple{CombinedParsers.NamedParser{CombinedParsers.Transformation{CombinedParsers.var"#62#63"{2}, CombinedParsers.Sequence{Tuple{String, CombinedParsers.Either{Vector{Any}, Tuple{Int64, Any}, Tuple{UInt32, UInt32}}}, Vector{Any}, Tuple{String, Tuple{UInt32, UInt32}}}, Vector{Any}, Tuple{UInt32, UInt32}}, Vector{Any}, Tuple{UInt32, UInt32}}, CombinedParsers.Optional{CombinedParsers.ConstantParser{1, Char, Char}, Union{CombinedParsers.MatchState, CombinedParsers.None}, Union{Missing, Char}}}, Vector{Any}, Tuple{Tuple{UInt32, UInt32}, Union{Missing, Char}}}, Tuple{var"#s54", var"#s53", var"#s52"} where {var"#s54", var"#s53", var"#s52"}, CombinedParsers.Regexp.var"#110#111", Vector{CombinedParsers.CombinedParser}}, Vector{Tuple{var"#s54", var"#s53", var"#s52"} where {var"#s54", var"#s53", var"#s52"}}, Vector{Vector{CombinedParsers.CombinedParser}}}}, Vector{Any}, Tuple{Any, Vector{Vector{CombinedParsers.CombinedParser}}}}, Vector{Any}, CombinedParsers.CombinedParser}, String}, Vector{Any}, Tuple{String, SubString, CombinedParsers.CombinedParser, String}}, Vector{Any}, Any}, Vector{Any}, Any})
    @ CombinedParsers ~/.julia/dev/CombinedParsers/src/CombinedParsers.jl:2547
  [3] top-level scope
    @ ~/.julia/dev/CombinedParsers/src/re-parser.jl:566
  [4] include(mod::Module, _path::String)
    @ Base ./Base.jl:386
  [5] include(x::String)
    @ CombinedParsers.Regexp ~/.julia/dev/CombinedParsers/src/re.jl:4
  [6] top-level scope
    @ ~/.julia/dev/CombinedParsers/src/re.jl:553
  [7] include(mod::Module, _path::String)
    @ Base ./Base.jl:386
  [8] include(x::String)
    @ CombinedParsers ~/.julia/dev/CombinedParsers/src/CombinedParsers.jl:13
  [9] top-level scope
    @ ~/.julia/dev/CombinedParsers/src/CombinedParsers.jl:2817
 [10] include
    @ ./Base.jl:386 [inlined]
 [11] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1209
 [12] top-level scope
    @ none:1
 [13] eval
    @ ./boot.jl:360 [inlined]
 [14] eval(x::Expr)
    @ Base.MainInclude ./client.jl:446
 [15] top-level scope
    @ none:1
in expression starting at /home/jonas/.julia/dev/CombinedParsers/src/re-parser.jl:566
in expression starting at /home/jonas/.julia/dev/CombinedParsers/src/re.jl:1
in expression starting at /home/jonas/.julia/dev/CombinedParsers/src/CombinedParsers.jl:6
ERROR: Failed to precompile CombinedParsers [5ae71ed2-6f8a-4ed1-b94f-e14e8158f19e] to /home/jonas/.julia/compiled/v1.6/CombinedParsers/jl_F6JdZu.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY)
   @ Base ./loading.jl:1356
 [3] compilecache(pkg::Base.PkgId, path::String)
   @ Base ./loading.jl:1302
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1017
 [5] require(uuidkey::Base.PkgId)
   @ Base ./loading.jl:910
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:897
gkappler commented 3 years ago

This julia 1.6 compilation issue is now fixed in registered CombinedParsers@0.1.6.

There is also a memory issue with Julia 1.6 for long Sequence @generated functions that I am currently investigating best strategies/causes. A workaround is in branch v.0.2.0, with a 10x performance cost (without generated function).

gkappler commented 3 years ago

This is fixed/worked around