You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
One long-standing issue about the compiler I have been meaning to address is the mechanism for reporting error & warning messages.
Rather than using Python's built-in logging library, I had for some reason implemented a custom message handling mechanism that is tightly bound to the mechanics of the compiler.
This is problematic for several reasons:
Poor control of message handling, filtering, and output
Difficult to use with compiler-adjacent tools like PeakRDL - one has to pass around a reference to the message handler class
Reinvents something that already exists - Python's logging facility
Changes
Migrate the systemrdl-compiler to emit messages using Python's logging facility.
Specifically, the following changes will be made:
Provide a new logging Formatter class that is specifically tailored for handling log messages that contain contextual RDL source referencing information. (basically provide a formatter that generates the exact same pretty error messages as before). To keep things easy to use, this formatter, along with a StreamHandler will be auto-loaded if no other handlers are found in the design.
Implement an equivalent mechanism for trapping and escalating errors during compilation & elaboration (escalate to RDLCompileError exception where appropriate)
Remove systemrdl.messages.MessagePrinter and systemrdl.messages.MessageHandler
Remove the optional message_printer argument to the RDLCompiler constructor
Remove references and usage of the MessageHandler at various points of the API (RDLCompiler.msg, RDLImporter.msg, and other commonly-used places)
Migration plan & compatibility
In nearly all cases, this will not affect anyone since I have not seen much reliance on overriding the default message printer, or other API usages. That said, since this represents a change to a small portion of the publicly-facing API, a proper deprecation cycle will be used in case these changes affect other users.
UPDATE: punting this to the v2.0 update of the compiler instead of hacking together a sloppy compatibility bridge.
If you think this change may affect you, be sure to subscribe to this issue page for updates.
The text was updated successfully, but these errors were encountered:
Background
One long-standing issue about the compiler I have been meaning to address is the mechanism for reporting error & warning messages.
Rather than using Python's built-in logging library, I had for some reason implemented a custom message handling mechanism that is tightly bound to the mechanics of the compiler.
This is problematic for several reasons:
Changes
Migrate the systemrdl-compiler to emit messages using Python's logging facility.
Specifically, the following changes will be made:
systemrdl.messages.MessagePrinter
andsystemrdl.messages.MessageHandler
message_printer
argument to theRDLCompiler
constructorRDLCompiler.msg
,RDLImporter.msg
, and other commonly-used places)Migration plan & compatibility
In nearly all cases, this will not affect anyone since I have not seen much reliance on overriding the default message printer, or other API usages.
That said, since this represents a change to a small portion of the publicly-facing API, a proper deprecation cycle will be used in case these changes affect other users.UPDATE: punting this to the v2.0 update of the compiler instead of hacking together a sloppy compatibility bridge.
If you think this change may affect you, be sure to subscribe to this issue page for updates.
The text was updated successfully, but these errors were encountered: