Now that #24490 is merged containing the core functionality, there's still a lot of loose ends to tidy up, but at least they can be merged incrementally. Here's a list [edit - organized and sorted by priority]:
jl_binding_deprecation_warning (should fix any final parts of #19686 and #24028)--depwarn=error and replace with something finer grained. Arguably blocked until the previous two points are resolved.Logging.ConsoleLogger, with markdown-based pretty printing, and other formatting niceties which will allow SimpleLogger to be further simplified. See MicroLogging.InteractiveLogger for a start at this. See also #25106, and https://github.com/JuliaLang/julia/pull/24490#issuecomment-351977978 at least. This is less API changes, and more setting a strong precedent for the data people include in their log events when they use the system.@show use the logging system so that shown variables can be captured as values rather than text when desired. (Main issue - which log level should this be? debug kinda makes sense, but info is arguably more useful for quick hacking.)@test_logs usage for matching multiple log messages - nicer syntax + be slightly more conservative about features.@test_logs failure Test.Result type - improve the way test sets capture results.Pkg2 also uses separate processes extensively, and the tests clearly ended up a bit of a mess, with some logs being captured on stderr from a separate process.How much of this is user-visible? We should heavily prioritize user-visible changes since we're trying to do a feature freeze here and get an alpha out. Non-user-visible changes can continue to be made during the alpha period, although ideally those should be minimal, this seems important enough that we can allow it.
I've organized the list here into a rough priority. I think I've got a fairly solid handle on how to do most of these things because I've already done the bulk of the investigation work and a fair chunk of the code. As to priority, I've laid them out as I see them, roughly, but happy to rearrange a bit.
The main thing I feel quite unsure about at this point is the remote workers issue as I really haven't done any investigation here.
Remove
--depwarn=errorand replace with something finer grained.
Note that we can always keep this and add a more fine-grained mechanism on top of it in the future and just redefine the behavior of this option in terms of the more fine-grained mechanism.
That's a good point, it's not strictly required that this be deprecated. My concern is that when implementing this with a logger, --depwarn=error is essentially a logger configuration mechanism and I suspect a command line option will compose badly with whatever logging configuration system we end up with. It can probably be hacked together in some way.
I guess we can always deprecate --depwarn and codename the release "Inception".
@c42f Does the new logging infrastructure have support for multiple simultaneous log streams?
e.g. could I have a seperate log stream per task? or collect all the logs from a function call into a seperate log stream?
Yes, this is exactly the way it's designed: with_logger(f, logger) calls f with all logs for the current task directed to logger. In addition, any child tasks which are spawned by f (or any deeper part of the call stack) inherit logger as the task local logger.
This list is kinda out of date at this point. The items which haven't been dealt with are either low priority or are tracked in their own separate issues. So I think I'll close this.
Most helpful comment
I guess we can always deprecate
--depwarnand codename the release "Inception".