./cad/klayout, Simple GDS and OASIS file viewer and Editor

[ Image CVSweb ] [ Image Homepage ] [ Image RSS ] [ Image Required by ]


Branch: CURRENT, Version: 0.30.10, Package name: klayout-0.30.10, Maintainer: pkgsrc-users

Although a comparatively simple piece of software, a layout viewer is not
only just a tool for the chip design engineer. Today design's complexity
require not only a simple "viewer". Rather, a viewer is the microscope
through which the engineer looks at the design.

There are numerous viewers available, but sadly there are not many which
satisfy a few basic requirements. Most of them are commercial and
expensive. If there is need for a simple, yet powerful viewer - here it is.


Required to run:
[x11/qt5-qtsvg] [x11/qt5-qttools] [x11/qt5-qtbase] [lang/python310] [lang/ruby31-base]

Required to build:
[pkgtools/x11-links] [x11/xcb-proto] [x11/xorgproto]

Master sites:

Filesize: 101513.553 KB

Version history: (Expand)


CVS history: (Expand)


   2026-08-07 02:57:21 by Makoto Fujiwara | Files touched by this commit (5) | Package updated
Log message:
(cad/klayout) Updated 0.29.12 to 0.30.10, based on wip/klayout by Atsushi Toyokura

(pkgsrc)
- Add two experimental patches for Timer::memory_size () at:
   src/tl/tl/tlTimer.cc
   src/klayout.pri

- To test the code inserted above, we have to know when the function is called.
  By asking chatGPT,
 **KLayout 0.30.10**, `tl::Timer::memory_size()` is called automatically when an \ 
**enabled `tl::SelfTimer` is destroyed and writes its performance report**

--------------------------------------
SelfTimer goes out of scope / is deleted
        v
SelfTimer::~SelfTimer()
        v
stop()
        v
report()
        v
Timer::memory_size()
--------------------------------------

The destructor contains:
   cpp
--------------------------------------
if (m_enabled) {
   stop();
   report();
}
--------------------------------------

Then `SelfTimer::report()` executes:

   cpp
--------------------------------------
size_t memsize = memory_size();
--------------------------------------

So this normally happens at the end of a timed C++ scope—for example when a \ 
function returns, an exception unwinds the scope, or the `SelfTimer` object is \ 
deleted. It prints elapsed user/system/wall time together with memory usage such \ 
as `123.45M (mem)`. A disabled `SelfTimer` does not call it. ([GitHub][1])

  (and not checked yet on above situations, sorry)

(upstream)

0.30.10          (2026-07-25):
* Bugfix: %GITHUB%/issues/2384 Deep DRC failure with scaled instances
* Enhancement: %GITHUB%/issues/2391 Grid Features: switching between coarser and \ 
finier grids with keyboard shortcut
* Bugfix: %GITHUB%/issues/2392 Wrong PCell instantiations when switching technologies
* Bugfix: %GITHUB%/issues/2396 Python objects did nott support weak refs
* Bugfix: Region#edges was not working properly when used on Regions with properties
  enabled. Now, with properties enabled, the regions are consistently formed \ 
from polygons with
  identical properties before generating the edges.
* Enhancement: %GITHUB%/issues/2398 Clarify 'move to' (and others) scope in \ 
window caption
* Enhancement: DRC two-layer checks now do not necessarily require merging for the
  first input. This in general speeds up the operation in certain cases.
  As a side effect, the error markers may be split according to partial input
  polygons, as is the case for plain "space" check already.
* Enhancement: Use multiple drawing workers for image_with_options rendering
* Bugfix: Update layer names in layer list (when used in addition to \ 
layer/datatypes) on reload
  As a side effect, the layer properties nodes will update the "real \ 
source" according to
  the actual name if the name is used in addition to layer/datatypes. Also, the \ 
layout readers
  will update layer names in the layer properties of the Layout object.
* Bugfix: Marek's bug: move interactive/copy interactive did not do anything \ 
when the mouse wasn't moved
* Bugfix: Entering '16:17' (or other nonsense) into 'new layout' layer list made \ 
KLayout hang
* Bugfix: API: removing a pin from a Circuit does not crash if the pin was not \ 
disconnected before.
  Now it's disconnected automatically
* Enhancement: Improved the image pixel value display: favors selected image, \ 
and follows mouse instantly
* Bugfix: When images are selected and images are turned off, the selection no \ 
longer persists
* Bugfix: Using PCell parameter name 'name' won't break PCell's cell_name_impl \ 
default implementation
* Enhancement: New API functions
  * Create a Layout as a deep copy of a cell (Layout#new)
  * PixelBuffer#to_bytes and PixelBuffer#from_bytes for zero-overhead RGBA pixel \ 
access

0.30.9           (2026-05-25):
* Bugfix: %GITHUB%/issues/2331 Screen size error (Assertion tlPixelBuffer.cc:260 \ 
n < m_height was not true)
* Enhancement: %GITHUB%/issues/2335 Editor Options (F3) behaviour has changed
* Enhancement: %GITHUB%/issues/2337 [Feature Request] Add to_bytes and \ 
from_bytes to shape classes
* Bugfix: %GITHUB%/issues/2339 Ruby ReportDatabase merging can lead to internal error
* Bugfix: %GITHUB%/issues/2343 copy_tree implicitly drops collinear points
* Bugfix: %GITHUB%/issues/2344 Instance properties inside a PCell are not \ 
preserved in KLayout
* Bugfix: %GITHUB%/issues/2345 Substrate sequestration
  Although this ticket was more a discussion, this enhancement fixes the behavior of
  empty layers in deep mode, which allows placing device terminals on them.
  This eliminates the need for the workaround mentioned in the ticket.
* Bugfix: %GITHUB%/issues/2350 strm2oas klayout/testdata/gds/issue_1835.gds \ 
a.oas, a.oas is empty
  With this fix, it is possible to save and load layouts that use a single \ 
library references
  or PCell variants as top cell. This is not strictly a supported use model, but \ 
may be
  useful in some cases. The "strm2xxx" tools now allow translating \ 
such files from OASIS
  to GDS and back.
* Bugfix: %GITHUB%/issues/2356 Edit options always shown, even for klayout -ne
* Enhancement: because of issue #2356 and #2335, the "Editor Options" \ 
dock was overhauled
  * It is called "Tool Options" now as it hosts not just shape editor \ 
options
  * The Ruler tool got its own page as the original page was not functional and
    rulers have other options. This replicates some settings from the "Ruler
    and annotations setup" page.
  * The dock widget's visibility can be controlled in the same way than the other
    docks. The "Edit/Editor Options" entry moved to "View/Tool \ 
Options". It turns
    on or off the tool options dock, which is populated with pages depending on \ 
the tool.
    The default key binding (F3) will now show or hide this dock.
* Enhancement: %GITHUB%/issues/2360 Sort ports by name in \ 
"make_top_level_pins"
* Enhancement: A feature to compute a density map. It is found inside \ 
Tools/Density Map.
  The density map can be computed from one or multiple layers, the region can be
  specified in terms of visible region, rulers or bounding boxes of certain layers
  or the whole cell. The tool will generate an image overlay over the layout
  holding the density data.
* Bugfix: using "xkill" on a KLayout instance ended in a crash
* Enhancement: settings of search features are persisted (see discussion 2868)
* Enhancement: when moving rulers with "snap to objects", all points of the
  rulers snap to edges or vertexes now.
* Bugfix: false color maps in images where incorrectly interpolated in some
  cases.
* Bugfix: small bugfix in L2N/LVSDB reader - default values of parameters were
  treated as int.
* Bugfix: properties on objects with properties (such as BoxWithProperties) where
  not properly serialized. Specifically their representation did not include the
  type. Hence it was not possible to retrieve properties on deserialization with
  "from_s". The fix is to annotate the property values with type \ 
information.
  NOTE: this is a change that is not backward-compatible.
* Bugfix: snapping rulers to edges parallel to the allowed ruler direction resulted
  in skew rulers.
* Enhancement: renamed ruler option for more clarity - changed
  'snap to objects (unless disabled in template)' to 'never snap to object' \ 
(inverted)
* Enhancement: enhancements in the script API
  * Cell#is_cold_proxy?: indicates if a cell is a "defunc" library \ 
reference
  * Cell#library_cell_name: gets the library cell name for a "defunc" \ 
reference
  * Cell#library_name: gets the library name for a "defunc" reference
  * Cell#pcell_name: gets the pcell name for a "defunct" reference
  * Layout#delete_cells: now available with a list of cell object
  * Layout#delete_cell_rec: now available with a cell object
  * Layout#prune_cell: now available with a cell object
  * Layout#prune_cells: for pruning multiple cells in one call
  * Layout#prune_subcells: now with a cell object
  * Layout#prune_subcells: now with multiple root cells
  * Layout#flatten: now with a cell object
  * Layout#flatten_into: now with cell objects
  * Layout#delete_cell: now with a cell object
  * Default value "all" for "levels" argument in \ 
"prune_subcells" and "prune_cell"
  * Default value "all" for "levels" and "true" \ 
for "prune" argument in "flatten"
  * Default value "all" for "levels" and "unity" \ 
for "trans" argument in "flatten_into"

0.30.8           (2026-04-14):
* Enhancement: %GITHUB%/issues/2248 Switch layouts but without losing the handle
* Bugfix: %GITHUB%/issues/2299 gf180mcu DRC performance regression.
  This patch contains some other enhancements which improve performance of DRC,
  although in certain cases only.
* Enhancement: %GITHUB%/issues/2300 More options to set layout format, \ 
specifically on LEF/DEF
* Bugfix: %GITHUB%/2301 UI freezes permanently with open Macro Development \ 
window and event listening plugin
* Bugfix: %GITHUB%/issues/2305 Library reloading problems
* Enhancement: %GITHUB%/2306 Feature Request: API-access to a setter for the \ 
selected entry in the Netlist Database Browser
* Bugfix: %GITHUB%/2311 Tip window is shown although running in non-GUI modebug
* Bugfix: %GITHUB%/2315 Edit/Layout/Scale causes confusing
* Enhancement: %GITHUB%/2316 Edit/Selection/Make Array: support both pitch and \ 
spacing
* Bugfix: %GITHUB%/2320 Failure to read OASIS files with large property strings
* Enhancement: %GITHUB%/2322 Options(text): split text scaling and rotation into \ 
two separate options
* Enhancement: %GITHUB%/2326 Fit shouldn't take bbox of "empty" struct \ 
into account
* Bugfix: %GITHUB%/2331 Screen size error (Assertion tlPixelBuffer.cc:260 n < \ 
m_height was not true)
* Enhancement: "strmrun" now can run DRC and LVS scripts
* Enhancement: "Library#library_by_name" now can be used with \ 
"*" for technology
* Bugfix: PCell "coerce_parameters" and "callback" was \ 
called with the client layout
  instead of definition layout, hence the DBU was incorrect if both layouts have \ 
different DBU.
* Enhancement: new config option: disable generation of new layers
  The name of the config option is "auto-create-new-layers".
  With this option set to true (default), new layers are automatically added to \ 
the layer list on
  "paste" or placing instances.
* Enhancement: hovering over a pixel of an image with display the pixel's value in
  the status bar.
* Enhancement: experimental support for library declaration files to install static
  libraries from other places than the "library" folder and with \ 
additional metadata.

0.30.7           (2026-03-07):
* Enhancement: %GITHUB%/issues/2248 Switch layouts but without losing the handle
* Bugfix: %GITHUB%/issues/2273 Potential use-after-free bug due to Ruby GC
* Bugfix: %GITHUB%/issues/2277 Poor netlister performance in some cases
* Enhancement: %GITHUB%/issues/2278 Option to hide markers frames
* Bugfix: %GITHUB%/issues/2284 klayoutrc parse issue silently replaces config file
* Bugfix: %GITHUB%/issues/2286 CLI arguments, '--help' / '--version' should be \ 
implemented
* Bugfix: %GITHUB%/issues/2293 Layers window: changing the layer order with the \ 
arrow buttons deselects the layer to be moved
* Enhancement: ReportDatabase#merge - a method to merge two report databases
* Bugfix: double clicking an edge in partial mode opened the properties dialog, \ 
not setting a point
* Bugfix: Python did not support downcasting of PolygonWithProperties to Polygon \ 
on Shapes#polygon for example
* Bugfix: OASIS reader was not able to read S_GDS_PROPERTY from file level or \ 
under forward reference conditions
* Enhancement: Adding an option '-of|--format' to strmxor and strmclip to \ 
specify the output format instead of taking it from the suffix
* Bugfix: 'oasis_read_all_options' as always on in buddy tools
* Bugfix: avoid a crash on application exit when using objects for user property \ 
values or names
* Bugfix: Fixing a small glitch: drawing into a ghost cell is possible, but did \ 
not turn off the ghost cell flag
* Bugfix: Fixing a potential segfault during layout painting due to a race \ 
condition (rare but happened)
* Enhancement: Performance improvement for hierarchical processor - better \ 
parallelization in some cases

0.30.6           (2026-02-07):
* Bugfix: %GITHUB%/issues/2210 LayoutView::create_measure_ruler() creates \ 
incorrect rulers
* Enhancement: %GITHUB%/issues/2214 Take selection modifer into account on \ 
release rather than on click
* Bugfix: %GITHUB%/issues/2220 Select fails to select from 2nd layout when two \ 
are loaded in same panel
* Bugfix: %GITHUB%/issues/2221 "save all" doesn't use the \ 
"generic options" in "save as"
* Enhancement: %GITHUB%/issues/2224 Object Properties should allow layer change
* Bugfix: %GITHUB%/issues/2229 Compilation error when building with the \ 
-without-qt and -with-64bit-coord flags together
* Bugfix: %GITHUB%/issues/2234 Trace net / trace path still not working
* Bugfix: %GITHUB%/issues/2252 db::NetlistCompare: internal error when comparing \ 
schematic and netlist
* Bugfix: %GITHUB%/issues/2262 strmxor -u -l wrongly reports differences on \ 
identical layers
* Bugfix: %GITHUB%/issues/2263 klayout throws an ERROR reading a magic file with \ 
"tri ... sw"
* Bugfix: %GITHUB%/issues/2267 LoadLayoutOptions.lefdef_config.map_file fails \ 
when path contains '+' character
* Bugfix: Using floats for Polygon::smooth distance checks, so that precise \ 
measurements are taken
* Enhancement: Point-like objects use pan-to-selection instead of \ 
zoom-to-selection when pasting
* Bugfix: No duplicate warning message box when drawing texts on a hidden layer
* Enhancement: More options on 'evaluate_nets' expressions, i.e. 'copy'. See \ 
documentation for details
* Enhancement: L2N format now will always include the expanded net name, so \ 
referring to a net in a log entry is possible
* Bugfix: DRC collect* functions did not work on edge pair layers
* Enhancement: Documentation now will also list hidden/internal classes to avoid \ 
confusing references to invisible classes
* Enhancement: DRC extend_refs function is now also available for edge and edge \ 
pair layers
* Enhancement: Pressing Ctrl key while drawing a box enforces a square, pressing \ 
Shift while drawing a box makes it centered at first location
* Enhancement: Pressing Ctrl and Shift keys does the same for box-style rulers \ 
(box, ellipse)
* Bugfix: Fixing strange snapping behavior on partial move at 45 degree directions
* Enhancement: Many operations now display edit boxes with current distances or \ 
dimensions.
  Press "Tab" to navigate to these boxes and specify distances or \ 
dimensions numerically.
  Press "Enter" to commit these changes and "Escape" to \ 
leave the boxes.
  For example: move distance, edge length during drawing of polygon or paths, \ 
box dimensions,
  text strings.
* Enhancement: New ruler mode "diagonal only"
* Bugfix: selecting a recent configuration in the editor options did not select \ 
the layer if it was freshly created
* Enhancement: Multi-Rulers can now be configured to display incremental lengths
  (use "DD", "LL", "XX" and "YY" \ 
variables - see documentation)
* Enhancement: "Move By", "Scale" and "Rotate by \ 
Angle" dialogs now have an "Apply" button and values are \ 
persisted
* Bugfix: Finding of objects at the mouse location (e.g. for net probing) did \ 
not work properly for dense layouts
* Enhancement: The Library view does not list cells starting with an underscore. \ 
That is a way to hide cells only used internally.

0.30.5           (2025-11-09):
* Enhancement: %GITHUB%/issues/2147 Feature request: collect multiple files into \ 
a single library if the library name is identical
* Bugfix: %GITHUB%/issues/2156 Crash when loading library with mabrains \ 
klayout_lib_manager
* Bugfix: %GITHUB%/issues/2160 Compiling with QT6 and -without-qt-network
* Bugfix: %GITHUB%/issues/2162 Select rectangle, query => coredump. asan: \ 
heap-use-after-free
* Enhancement: %GITHUB%/issues/2168 Reloading cell libraries does not work
* Bugfix: %GITHUB%/issues/2169 Tech-specific "python" folder not added \ 
to path
* Enhancement: %GITHUB%/issues/2170 Ergonomics / Interface / "Select \ 
Cell" dialog: position of the "Show all cells" tick box
* Enhancement: %GITHUB%/issues/2172 Finer-grained library API
* Enhancement: %GITHUB%/issues/2174 Publish \ 
"on_current_layer_changed_event" of LayoutView
* Enhancement: %GITHUB%/issues/2175 True text bounding box for labels in Python/Ruby
* Enhancement: %GITHUB%/issues/2176 Allow placing vias in all modes
* Enhancement: %GITHUB%/issues/2180 Feature request: View->Show Unresolved \ 
References
* Enhancement: %GITHUB%/issues/2183 strmxor --deep, --drop-empty-cells should be \ 
the default
* Bugfix: %GITHUB%/issues/2191 LIBNAME is not maintained in GDS in \ 
"File/Save"
* Bugfix: %GITHUB%/issues/2194 Forward/backward features can't be bound to a key
* Bugfix: %GITHUB%/issues/2195 Feature request: extend PCell API to provide a \ 
suitable cell name including PCell parameters
* Bugfix: %GITHUB%/issues/2201 Net Tracer "Trace path" not working \ 
when zooming
* Bugfix: %GITHUB%/issues/2208 DRC Failed to report results correctly
* Bugfix: Fixing problem with HM decomposition with non-trivial triangulation \ 
constraints
* Enhancement: Cursor now snaps to center of edges and centers of boxes too
* Enhancement: Experimental integration of the LStream format
  Details about the LStream format and the motivation can be found here:
  https://codeberg.org/klayoutmatthias/lstream/src/branch/main/doc/doc.md
  If you encounter problems building KLayout, you can use the -nolstream option
  in the build script to disable this module.

0.30.4           (2025-09-09):
* Bugfix: %GITHUB%/issues/2110 Feature request: make unresolved references \ 
visible and editable in the layout view
* Bugfix: %GITHUB%/issues/2111 Internal error on R extraction
* Bugfix: %GITHUB%/issues/2112 Incorrect computation of tile border in tiled fill
* Enhancement: %GITHUB%/issues/2116 Associate each image to a layer
* Bugfix: %GITHUB%/issues/2133 Crash in Macro Development: when using find and \ 
replace
* Bugfix: %GITHUB%/issues/2134 DRC: edge layer - merged method gives an error
* Enhancement: %GITHUB%/issues/2141 Allow corner dots to participate in edge DRC \ 
functions
* Enhancement: %GITHUB%/issues/2145 "default_text_size" Option for GDS \ 
writer
* Bugfix: Undo was not properly handled on "apply technology" - layer \ 
properties were cleared
* Enhancement: "Relative" option of properties dialog is persisted now
* Enhancement: "Select highlighted objects" from context menu in \ 
properties dialog's object list.
  This feature will reduce the selection to the highlighted objects.
* Enhancement: Support for via placement during path drawing
  Vias can switch to a new layer and are automatically placed. To configure vias,
  PCells have to be supplied which are declared as vias. See \ 
PCellDeclaration#via_types.
  There is also a new sample (Python or Ruby) that demonstrates a simple via type.
  The default key binding to trigger via placement is "O".
* Bugfix: Fixing a crash on 'show parameter names' in PCell dialog
* Bugfix: Bugfix on Plugin registration
  One effect was that on dynamic re-registration of a plugin the grid plane \ 
disappeared.
* Enhancement: Added a sample for editor hooks (allow painting a DRC halo during \ 
editing)
* Enhancement: Adding a number of features to the plugin API, specifically:
  - Allowing to register new pages for the editor options and configuration dialog
  - Support for snapping and object snap indicators
  - "Tab" key is handled to generate an event which can be used to \ 
show a modal dialog or
    a pre-defined page.
  A sample is provided for Python and Ruby which demonstrates these features
* Bugfix: Internal error when trying to replace a shape in a standalone Shapes \ 
collection while preserving properties
* Bugfix: Internal error when copying while move/copy operation of images and rulers
* Bugfix: Avoid a warning on writing cells/files in 'under_construction' mode \ 
when there is nothing to update
* Enhancement: Rulers now snap to objects while moving
* Enhancement: Added LayoutView#layer_list_name as read access for \ 
LayoutView#rename_layer_list
* Enhancement: DRC and Region fill functions now take an exclude area as a \ 
separate argument
  This will sometimes remove the need for doing expensive "NOT" \ 
computations before
  passing an "to fill" area to the fill functions. Now, this \ 
computation is done internally
  and more efficiently in most cases.
* Bugfix: MainWindow now is a managed object. This removes the need to keep an \ 
instance
  in scripts in most cases - for example when registering event callbacks on \ 
MainWindow
* Bugfix: Polygon's "to_itype" and "to_dtype" do not attempt \ 
orientation normalization now.
  This helps preserving non-orientable polygons, specifically those which are created
  by Polygon#sized and related functions.
* Bugfix: LayoutView#clear_layer_list now preserves the layer list name (it was \ 
cleared as well)
* Enhancement: While drawing a box, the other corners also snap to objects as \ 
second priority now

0.30.3           (2025-08-05):
* Enhancement: %GITHUB%/issues/2044 Different combination modes on strm2xxx \ 
tools (+ and ,)
* Bugfix: %GITHUB%/issues/2073 Klayout fails to read CELLNAME S_CELL_OFFSET \ 
property on Windows on big files
* Bugfix: %GITHUB%/issues/2075 strm2oas ignores def net routing wire extensions
* Bugfix: %GITHUB%/issues/2081 strm2oas a.oas,c.oas o.oas coredumps
* Bugfix: %GITHUB%/issues/2087 DRC: Poor fill with skew step vectors (see more \ 
fill-related topics below)
* Bugfix: %GITHUB%/issues/2088 Fixed a use case that generated duplicate OASIS \ 
cell IDs
* Bugfix: %GITHUB%/issues/2094 Performance issue in the python code to insert \ 
Regions into Shapes
* Bugfix: %GITHUB%/issues/2100 RNetExtractor extracts wrong RNode locations with \ 
tesselation
* Bugfix: %GITHUB%/issues/2102 RNetExtractor internal error
* Bugfix: Fixed automatic execution of scripts after package installation
  Now, restarting KLayout after package installation may not be needed
* Bugfix: File watcher dropped file after is was temporarily removed
* Bugfix: After deleting terminals from devices, reading old L2N/LVSDB files
  made these terminal re-appear in the netlist browser.
* Enhancement: primary and secondary device parameters are separated in
  the LVS netlist view, so it is easier to see which parameters are relevant
* Bugfix: Avoid a crash when reading OASIS files with broken code tables
  in OASIS CBLOCKs
* Enhancement: New Ruby/Python functions: Macro#current and Macro attributes
  (Macro#get_attribute, Macro#has_attribute, Macro#set_attribute, \ 
Macro#delete_attribute)
  These features allow passing values in and out from a macro in other ways
  than defining global variables and basically allow parameterized macros.
* Enhancement: Convenience function ObjectInstPath#cell
* Bugfix: Some layout queries did not render the correct path_dtrans
* Bugfix: "tap" feature
  - was not selecting shapes that fully overlap the view
  - texts are not considered as detecting them requires potentially search a \ 
large area
* Bugfix: Fixed a TODO from old issue #1470
* Enhancement: DRC function "def_output": A simple yet useful \ 
extension to obtain
  the output layout and to manipulate it (within limits)
* Bugfixes and enhancements: fill feature (see also issue #2087)
  - tiles in tiled mode most not overlap when the origin is not global as tiles \ 
may use different origins
  - more efficient computation of remaining fill area
  - fill pattern "margin" feature simplifies keeping distance to other fill
    shapes or original features in multi-fill scenarios
  - fixed MT issues when using the fill feature in tiled mode with multiple threads
  - better compression of fill cell instances into arrays
* Enhancement: Ruby/Polygon methods set_properties and clear_properties for \ 
Cell, Layout, Shape and Instance
* Enhancement: a bunch of features that utilize expressions on polygons and \ 
other shapes
  to attach properties, filter base on properties or compute values in properties
  (aka "measurement features")
  - PolygonFilterBase#expression_filter (to be used in Region#filter and \ 
Region#filtered)
    can be used to filter polygons based on KLayout expressions, including properties
  - PolygonPropertiesExpressions object (to be used in Region#process and \ 
Region#processed)
    can be used to attach properties based on KLayout expressions, including \ 
other properties
  - Same for Edges, EdgePairs and Texts
* Enhancement: handling of properties in shape merge in Region
  - Region#join_properties_on_merge controls how properties and handled during \ 
shape merge
  - New respective arguments in Region#merge, Region#merged
  - New layer methods "merge_props" and "merged_props" in \ 
DRC (allows joining properties
    from same shapes on different layers)
* Enhancement: net property evaluation using KLayout expressions.
  Allows implementing more complex antenna rule checking schemes for example.
  - Ruby/Python: LayoutToNetlist#evaluate_nets
  - DRC: evaluate_nets

0.30.2           (2025-05-29):
* Enhancement: %GITHUB%/issues/2016 Lazy evaluation of PCell also when changing \ 
guiding shape properties
* Enhancement: %GITHUB%/issues/2041 strm2oas should read --lefdef-lefs and \ 
--lefdef-lef-layouts only once
* Enhancement: %GITHUB%/issues/2055 Check ports feature for LVS
* Enhancement: %GITHUB%/issues/2057 Feature request: nanometer scalebar
* Bugfix: %GITHUB%/issues/2060 Edges#with_angle fails for long edges
* Enhancement: Support for ARM Python packages (thanks, Troy!)
* Enhancement: PolygonNeighborHood now allows specifying a variant type
  for anisotropic applications
* Bugfix: Lower case hex escapes in URI's were not handled correctly
* Bugfix: internally handling "%ld" sprintf as 64bit compatible for
  better Linux/Windows compatibility (e.g. file position in error messages
  was not printed correctly on Windows at positions >2G)
* Bugfix: LVS DB internal net names now are preserved and not renumbered
  This way, log entries are consistent with net names and the generated netlist
  names are consistent with LVS reports.
* Bugfix: "same_nets" net names are now case insensitive in both netlists
  instead of schematic only. See https://github.com/IHP-GmbH/IHP-Open-PDK/issues/484
* Feature: Ruby/Python API for adding and removing log entries in LVS DBs
  LayoutToNetlist#clear_log_entries and LayoutToNetlist#add_log_entry
* Feature: NetlistCrossReference#each_net_pair etc. functions take a single
  Circuit or Net object instead of a pair (can be schematic or layout objects)
* Feature: Support functions for parasitic extraction - experimental
  Currently, pieces for R extraction are available in the pex Python module space.
  These are just first bits - see \ 
https://martinjankoehler.github.io/klayout-pex-website/doc/doc.html
  for ongoing work.
* Feature: MALY jobdeck format support (reading) - experimental

0.30.1           (2025-04-27):
* Bugfix: %GITHUB%/issues/2011 Some DRC bugs fixed
* Bug: %GITHUB%/issues/2014 Bug fixes in LEF/DEF reader
* Enhancement: %GITHUB%/issues/2019 Support for Qt 6.9
* Bugfix: %GITHUB%/issues/2020 Strict weak ordering issue fixed in edge processor
* Enhancement: %GITHUB%/issues/2024 Option to configure grid density
* Bugfix: %GITHUB%/issues/2025 Brackets get added in List type PCell parameter \ 
edit field
* Bugfix: %GITHUB%/issues/2026 Display is dead after opening 2.5d view
* Bugfix: %GITHUB%/issues/2038 DEdgePairWithProperties not working properly in \ 
scripts
* Bugfix/Enhancement: some updates of "strmxor" tool
  - strmxor was giving wrong results if cell variants are
    present where one variant is covered entirely by a large shape
  - Parallelization now happens on a per-layer basis (same as for
    XOR tool in KLayout)
  - Shape count was not consistent in deep mode
  - All buddy tools print total runtime with -d11

0.30.0           (2025-03-25):
* Bug: %GITHUB%/issues/1996 More robust triangulation
* Bug: %GITHUB%/issues/2002 Path to polygon conversion issue
* Enhancement: Better support for user properties
  The property management has been overhauled. Properties are not globally
  scoped. The "Layout" class now provides class methods to convert \ 
property IDs
  to property hashes and back. It is no longer required to know the origin of
  a property ID.
  Other changes are:
  - New classes "BoxWithProperties", "EdgeWithProperties", \ 
"PolygonWithProperties",
    "SimplePolygonWithProperties", "PathWithProperties", \ 
"EdgePairWithProperties",
    "TextWithProperties" and corresponding "D..." classes.
    Many functions accept these objects now in addition to the property-less \ 
"Box",
    "Edge" etc. objects. Many functions now deliver property-annotated \ 
objects
    instead of the plain ones.
  - "EdgePairFilter#property_glob", \ 
"EdgePairFilter#property_filter", \ 
"EdgePairFilter#property_filter_bounded"
    creates filters for edge pair objects, which can be used on \ 
"EdgePairs" containers to
    filter by properties.
  - The same is available for "EdgeFilter" (for filtering edges in \ 
"Edges" containers),
    "PolygonFilter" (for filtering polygons in "Region" \ 
containers), and
    "TextFilter" (for filtering texts in "Texts" containers)
  - New method "process_with_properties" for \ 
"PolygonOperator", "EdgeOperator",
    "EdgePairOperator" and "TextOperator"
* Enhancement: New class "PolygonNeighborhood"
  This is a visitor to obtain all "neighboring" polygons for each polygon
  in a Region. Currently, neighborhood is defined by the bounding box of
  the primary polygons.
* Enhancement: Layout queries can use "$_" to refer to the current cell now
* Enhancement: New methods:
  - "LayoutToNetlist#build_net", "build_nets" and \ 
"build_all_nets" do not
  - "LayoutToNetlist#layer_index" from a name
  - "LayoutToNetlist#texts_by_index" and \ 
"LayoutToNetlist#texts_by_name"
  - "LayoutToNetlist#original_layout" and \ 
"LayoutToNetlist#original_top_cell"
  - "LayoutToNetlist#polygons_of_net" and \ 
"LayoutToNetlist#texts_of_net"
  - "Device#terminal_ref"
  - New "text_prop" argument in Texts#polygons (texts can transfer their
    string to the generated polygons as user properties)
  - New methods "Polygon#delaunay", "DPolygon#delaunay", \ 
"SimplePolygon#delaunay"
    and "DSimplePolygon#delaunay"
   2026-07-24 17:56:07 by Takahiro Kambe | Files touched by this commit (24)
Log message:
Bump PKGREVISION affected by default Ruby's version change.
   2026-07-13 06:36:42 by Thomas Klausner | Files touched by this commit (846)
Log message:
*: recursive bump for libmpg123 dependency in lame
   2026-02-14 08:41:02 by Takahiro Kambe | Files touched by this commit (20)
Log message:
Bump PKGREVISION by changing of default Ruby's version.
   2026-01-27 14:04:47 by Thomas Klausner | Files touched by this commit (1)
Log message:
klayout: remove -qt5, configure says option is removed

and qt version is auto-detected
   2026-01-07 09:49:50 by Thomas Klausner | Files touched by this commit (2525)
Log message:
*: recursive bump for icu 78.1
   2025-10-23 22:40:24 by Thomas Klausner | Files touched by this commit (2999)
Log message:
*: recursive bump for pcre2

Running an old binary against the new pcre doesn't work:
/usr/pkg/lib/libpcre2-8.so.0: version PCRE2_10.47 required by \ 
/usr/pkg/lib/libglib-2.0.so.0 not defined
   2025-04-24 16:16:37 by Thomas Klausner | Files touched by this commit (2412)
Log message:
*: recursive bump for jpeg -> libjpeg-turbo switch