package ppx_minidebug
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- Added
- Changed
- Fixed
- [1.5.1] -- 2024-07-07
- [1.5.0] -- 2024-03-20
- [1.4.0] -- 2024-03-08
- [1.3.0] -- 2024-02-28
- [1.2.1] -- 2024-02-15
- [1.2.0] -- 2024-02-14
- [1.1.0] -- 2024-02-11
- [1.0.0] -- 2024-02-03
- [0.9.0] -- 2024-01-18
- [0.8.0] -- 2024-01-16
- [0.7.0] -- 2023-12-31
- [0.6.2] -- 2023-12-21
- [0.6.1] -- 2023-12-20
- [0.6.0] -- 2023-12-15
- [0.5.0] -- 2023-10-29
- [0.4.0] -- 2023-10-18
- [0.3.3] -- 2023-09-15
- [0.3.2] -- 2023-04-25
- [0.3.1] -- 2023-03-30
- [0.3.0] -- 2023-03-29
- [0.2.0] -- 2023-03-29
- [0.1.4] -- 2023-03-21
- [0.1.3] -- 2023-03-17
- [0.1.2] -- 2023-03-06
Debug logs for selected functions and let-bindings
Install
dune-project
Dependency
Authors
Maintainers
Sources
1.6.0.tar.gz
md5=850390df0384d0e0b11c966350c0862a
sha512=b558bf8504c9cfbddd85489a2135fa6d98a6758be21d7bae7e217332778577a2926b90e2a86489a78e92cc2ee43ea04bda1267eca12203af76e0b2b711a51fd6
doc/CHANGELOG.html
[1.6.0] -- 2024-08-08
Added
- Runtime
description: where the logs are directed to. - A new family of entry points
_l_resp._lb_that retrieve debug runtimes via a call_get_local_debug_runtime ()resp._get_local_printbox_debug_runtime (): these functions are correspondingly expected in the scope. The entry points facilitate using thread-local (and domain-local) debug runtimes. - Compile-time vs. runtime consistency check for
%%global_debug_log_level_from_env_var, and%%global_debug_log_level_from_env_var_unsafethat bypasses the check.
Changed
- Runtime builders take a
descriptionoptional argument. - We now check for the compile-time vs. runtime consistency of log level specifications (#45).
Fixed
_this_infix on non-let-binding expressions throws a syntax error instead of being a no-op.- As a design decision aligned with #51, we output the error instead of processing the expression, i.e. we don't ignore the
_this_infix.
- As a design decision aligned with #51, we output the error instead of processing the expression, i.e. we don't ignore the
_rt_/_rtb_entry points now work correctly on non-function expressions, making them functions of the debug runtime.- Not outputting
%log_entrywhenlog_level=Nothing. - Highlighting of
<returns>and<values>.
[1.5.1] -- 2024-07-07
Changed
- Outputs entry ids on the stack when reporting static vs. dynamic scope mismatch failure.
- Promotes
val snapshot : unit -> unitto the generic interface, implemented as no-op in the flushing backend. - Does not try to debug module bindings.
[1.5.0] -- 2024-03-20
Added
- An API function
Debug_runtime.open_log_no_sourcefor log entries without associated source code locations, and a corresponding[%log_entry]extension point. - A simple, minimalistic version of a Flame Graph output in ToC files (PrintBox backend only).
- A new ToC criterion: elapsed time threshold.
- And-or gates for ToC criteria.
[1.4.0] -- 2024-03-08
Added
- A setting
verbose_entry_idsthat prefixes logged values with entry id tags. - Log entries now generate anchors, HTML syntax:
<a id=ENTRY_ID></a> - Table of Contents, initial version (in the future this might be optionally a flame graph).
Changed
- Fixes #32: optionally output time spans instead of clock times.
- Breaking: renames
Debug_chtoShared_config. - Breaking: replaces the
open_log_preamble_briefandopen_log_preamble_fullwithopen_logand a settinglocation_format. - Breaking: Adds
fname,start_lnum,entry_idparameters toclose_logto debug lexical-vs-dynamic scope mismatches and spurious closes. - Adds
global_prefixto the error message onclose_logfailure. - Entry ids output with
~print_entry_ids:truenow link to the entry anchors.
[1.3.0] -- 2024-02-28
Added
- A new entry extension point prefix:
%diagn_restricts the compile-time log level toPrefixed [||], does not change tighter settings (Nothing,Prefixed [|prefixes...|]). forget_printboxsnapshotin the PrintBox backend as in #21.- Optionally,
snapshot ()at the end of alog_valuecall if elapsed time since last snapshot is greater than given threshold. - A replacement
Minidebug_runtime.sexp_of_lazy_tthat does not force the thunk (but prints content if available). - A new extension point
[%log_result]to convey information in a header. - A new extension point
[%log_printbox]that directly embeds aPrintBox.tin the logs, instead of a representation of it. A correspondinglog_value_printboxentry inMinidebug_runtime.Debug_runtime. - A new registered extension point
[%%global_debug_log_level_from_env_var "env_var_name"].
Changed
- Re-interpret
Prefixed [||]andPrefixed_or_result [||]to mean "explicit logs only" -- originally (as logic indicates) it was equivalent toNothing. - Change runtime
Prefixed_or_resultto only output results if an entry would be non-empty without them. - Breaking change: removed the
Pp_formatbackend. - More informative headers for tracking: e.g. anonymous functions logged with
fun:file_name:LNUMinstead of__fun. - When printing sexps, don't escape strings for box-level atoms, print them directly. This can be disabled by setting
sexp_unescape_stringsto false. - A more configurable
debug_flushingbuilder. max_inline_sexp_lengthis now configurable via adebug_filecall, and the default is bumped to 80.
Fixed
- Be more defensive about not allowing multiline descriptions and messages.
- Don't output line breaks in time-tagged headers.
- Be more consistent about when entries are opened: open toplevel (extension-point) entries even if not binding anything; don't open nested entries when restricted to explicit logs.
- Nested structure items are not toplevel extension points (fix over-generating log entries e.g. for other ppx extensions).
[1.2.1] -- 2024-02-15
Added
- Optionally print
entry_ids for log headers (and escaping logs).
Fixed
- Do not crash when logging value with an empty entry stack; while unusual, "logs escaping lexical scope" are fine.
[1.2.0] -- 2024-02-14
Added
- Runtime log levels for the PrintBox backend.
- Compile-time log levels.
Changed
%debug_entry points log un-annotated functions but only the function the entry point is attached to.- Added a default type
stringto%logexpression decomposition, reducing the need for annotations.
Fixed
_rt_&_rtb_should work even when nested inside another debug scope.- Nested entry extension point is still considered toplevel.
- Tighter error locations for
%logmissing types or type errors.
[1.1.0] -- 2024-02-11
Added
- A shared runtime-wide setting
global_prefixfor prefixing log headers (and closing tags in the flushing backend), to disambiguate (or debug) interactions of different runtime instances. _rt_resp._rtb_(e.g.%track_rtb_sexp) entry points to support runtime-passing, i.e. abstracting over aDebug_runtimeresp.PrintBox_runtime.- An extension point
%logthat is not registered -- therefore reducing interference with logger ppxs -- and does not open a new log subtree. - Optionally indicate elapsed time in subtree headers in the PrintBox backend.
Changed
- Removed the VS Code specific section of the README.
- Slightly breaking change: the
~descrparameter of the logging functions in the runtimes is now optional.
Fixed
log_value_ppwould raise a potentially uncaught or misleading exception, now marks a syntax error.- Setting of the global
log_valuewas not updated for nested extension points.
[1.0.0] -- 2024-02-03
Added
- PrintBox Markdown backend.
- Optionally, log to multiple files, opening a new file once a file size threshold is exceeded.
- Continuous Integration tests.
- Fixes #9: handle tuple and record patterns.
- Handle variants patterns, nested patterns, ... pretty much all patterns.
- Log bindings in
matchandfunctionpatterns, but only when in a%track_scope. - Provide pattern text in addition to the branch number (counted from 0).
- Propagate type information top-down and merge different sources of type information.
- Optionally, log the type information found with extension points
%debug_type_infoand%global_debug_type_info. - A PrintBox-backend option
truncate_childrento limit the amount of output.
Changed
- Rename
debug_htmltodebug_file, since it now supports both HTML and Markdown. Take file name/path without a suffix. - Refactored PrintBox configuration, smaller footprint and allowing control over the backends.
- Changed
highlighted_rootsto a more generalprune_upto: prune to only the highlighted boxes up to the given depth. - Exported
PrintBox_runtimeconfiguration for better flexibility (in-flight configuration changes). - Refactored the optional termination configuration
max_nesting_depthandmax_num_childreninto extension points%debug_interruptsand%global_debug_interrupts.
Fixed
- In
values_first_mode, be consistent about what counts as a returned value. - Missing transformations for
%debug_notrace, and generally for the root construct of a body of a non-logged binding.
[0.9.0] -- 2024-01-18
Added
- Optionally output source locations as hyperlinks -- requires a (potentially empty) address prefix.
- A setting
values_first_modefor the PrintBox runtime, to put results of computation as headers, and push paths beneath headers (friendly for HTML-backed foldable output).
Changed
- Include the variable name in the open-log line (just as function name for functions).
- Output the description of a for loop body as
<for [identifier]>rather than just[identifier]. Debug_runtimefunctions now take an~entry_idparameter, set to a per-entry ID generated byget_entry_id.- Small non-atomic sexp values can now be printed inline with the variable name (like sexp atoms) rather than spread out as trees.
[0.8.0] -- 2024-01-16
Added
When in an active
%track_scope:- Log
forloop nesting and indices at the beginning of a loop body. - Log
whileloop nesting. - Log
functionbranches (similar tomatchbranches). Log all functions. Doing it only for
%track_to reduce noise.- This will log type-annotated arguments of anonymous functions (even when the function result type is not annotated).
- Log
[0.7.0] -- 2023-12-31
Added
A new optional PrintBox-only setting
highlight_terms, which applies a frame / border on paths to leaves matching a regular expression.- A corresponding setting
exclude_on_path-- if this regular expression matches on a log, its children have no effect on its highlight status. I.e.,exclude_on_pathstops the continued propagation of highlights. - A flag
highlighted_rootsprevents outputting toplevel boxes that have not been highlighted.
- A corresponding setting
A set of extension points
%track_sexp,%track_ppetc. that parallel%debug_sexp,%debug_ppetc. but additionally log whichifandmatchbranch got executed.- An extension point
%debug_notracethat turns off logging the branch of the specificiformatchexpression. It is ignored by the%debug_extension points.
- An extension point
Fixed
- Issue #8: ignore nested debug scope indications (don't re-process them).
[0.6.2] -- 2023-12-21
Fixed
- Backward compatibility:
Out_channel.output_string-->Stdlib.output_string.
[0.6.1] -- 2023-12-20
Support for debugging infinite loops.
Added
- A new optional setting
max_num_children, which terminates a computation with aFailureexception when the given size of sibling logs is exceeded.
[0.6.0] -- 2023-12-15
Added
- Runtime entry point
debug_flushingthat returns aFlushingruntime which by default logs tostdout. - A new optional setting
max_nesting_depth, which terminates a computation with aFailureexception when the given nesting of logs is exceeded.
[0.5.0] -- 2023-10-29
Added
- An option to output to HTML, when in the
PrintBoxruntime. - An option to convert the logged
sexpvalues toPrintBoxtrees, when they exceed a given size in atoms. - Runtime entry points
debug_htmlthat returns aPrintBoxruntime configured to output HTML into a file with the given name, anddebugthat returns aPrintBoxruntime which by default logs tostdout.
Changed
- Exception handling that allows proper tracing/logging for raising functions and crashing (via uncaught exception) programs.
[0.4.0] -- 2023-10-18
Added
- The
PrintBoxlogger now allows disabling (not outputting) a whole subtree of the logs.
Fixed
- A broken link in the documentation landing page.
[0.3.3] -- 2023-09-15
Changed
- Breaking change: explicitly set whether logs should be time tagged.
[0.3.2] -- 2023-04-25
Fixed
- Missing version bounds on
ocamlandppxlibto make CI happy.
[0.3.1] -- 2023-03-30
Fixed
- A small tweak to have
dune-releasework.
[0.3.0] -- 2023-03-29
Changed
- Breaking change: renamed
Minidebug_runtime.FormattoMinidebug_runtime.PP_format. - Non-optionally depending on
sexplib0andppx_sexp_conv, as optional dependency was making it hard to test. Also theminidebug_runtimesource files duplication was ugly. - Trying to minimize dependencies: removed the unused direct dependency on
base, butppx_sexp_convdepends on it. Removed the dependency onstdio. - Added a building-related comment to the documentation.
[0.2.0] -- 2023-03-29
Fixed
- Added non-optional package dependencies.
- Major bug fix: missing processing of the top expression in a function body.
[0.1.4] -- 2023-03-21
Changed
- Merged the two packages
ppx_minidebugandminidebug_runtimeinto one.
[0.1.3] -- 2023-03-17
Fixed
- Handles labeled function arguments.
Added
- Documentation suggestions regarding VOCaml.
[0.1.2] -- 2023-03-06
Added
- A syntax extension to instrument type-annotated bindings and functions with logging.
- The extension supports 3 value conversion mechanisms: pp and show from deriving.show, and sexp from ppx_sexp_conv.
- The
minidebug_runtimepackage provides 3 logging backends: Format based purely on formatters, Flushing that converts to strings first and flushes output after every entry, and PrintBox that pretty-prints as trees using the printbox package. - References a VS Code extension that builds flame graphs for the
Flushinglogger out-of-the-box. - Documentation and API docs on github.io.
- Tests, including testing the writing-to-files functionality. Uses
sedfor sanitizing.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- Added
- Changed
- Fixed
- [1.5.1] -- 2024-07-07
- [1.5.0] -- 2024-03-20
- [1.4.0] -- 2024-03-08
- [1.3.0] -- 2024-02-28
- [1.2.1] -- 2024-02-15
- [1.2.0] -- 2024-02-14
- [1.1.0] -- 2024-02-11
- [1.0.0] -- 2024-02-03
- [0.9.0] -- 2024-01-18
- [0.8.0] -- 2024-01-16
- [0.7.0] -- 2023-12-31
- [0.6.2] -- 2023-12-21
- [0.6.1] -- 2023-12-20
- [0.6.0] -- 2023-12-15
- [0.5.0] -- 2023-10-29
- [0.4.0] -- 2023-10-18
- [0.3.3] -- 2023-09-15
- [0.3.2] -- 2023-04-25
- [0.3.1] -- 2023-03-30
- [0.3.0] -- 2023-03-29
- [0.2.0] -- 2023-03-29
- [0.1.4] -- 2023-03-21
- [0.1.3] -- 2023-03-17
- [0.1.2] -- 2023-03-06