Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

disable python "Caught the following exception:" window in Macro Development #85

Closed
lukasc-ubc opened this issue Mar 1, 2018 · 26 comments

Comments

@lukasc-ubc
Copy link

Hi @klayoutmatthias,

This question is regarding handling try/except cases in python modules loaded in KLayout.

On MacOS (I haven't checked on Windows), when a module is within the KLayout python folder, e.g., urllib3 in ~/.klayout/python/urllib3, and when you run a macro that uses that module, with the Macro Development window open, each try/except creates exceptions which pop up a GUI:

Caught the following exception:
....
Press 'Ok' to continue and 'Cancel' to stop in the debugger

However, if that module is installed in the system, e.g., pip install urllib3, then the same exceptions don't trigger the GUI.

And with the Macro Development window closed, you don't see these message and everything works fine.

What this means is that for modules that I develop and put in the KLayout path, I need to minimize the use of try/except, otherwise it makes debugging difficult (if you have to click "OK" 20 times before you get to the actual error you want to debug).

Is there any way to selectively disable the try/except dialogs for specific modules, or perhaps placing them in folders (salt/...) so they don't have these messages?

@thomaslima
Copy link
Collaborator

@lukasc-ubc
Copy link
Author

lukasc-ubc commented Mar 8, 2018 via email

klayoutmatthias added a commit that referenced this issue Mar 11, 2018
This commit tries to address #85 and provide these features:
 - dynamic configuration of the macro IDE behaviour
 - side effect: a new entry in the setup dialog for the
   IDE settings
 - "stop on exceptions" can be taught to ignore certain files
@klayoutmatthias
Copy link
Collaborator

Hi all,

you can disable the "stop on exception" feature with this code:

pya.Application.instance().set_config("macro-editor-stop-on-exception", "false")

But this flag is evaluated only when the macro IDE is started - hence it's not going to become efficient until you close and re-open the IDE.

I have tried to implement a feature that allows "teaching" which files are to be ignore: the "stop on exceptions" button now has a "ignore" button. If this is used, the corresponding file is not longer considered. The list of ignored files can be cleared in the setup dialog. In addition, the configuration mentioned above will be dynamic. The commit is 5fbc207

Matthias

@thomaslima
Copy link
Collaborator

Hi Mattias. I am getting this bug while trying to launch the application.
screen shot 2018-03-12 at 10 20 12

@klayoutmatthias
Copy link
Collaborator

Sorry, my fault. Should be fixed with 3ae71d7.

@thomaslima
Copy link
Collaborator

Thanks. I thought I had caught that and it persisted. I will try again. Does it work fine for you with a fresh ~/.klayout?

@thomaslima
Copy link
Collaborator

Hi @klayoutmatthias Sorry, it is still not fixed here. I rebuilt the entire lay module, and it still persisted. Any way I can get the stack trace so I can show you?

@klayoutmatthias
Copy link
Collaborator

klayoutmatthias commented Mar 13, 2018 via email

@thomaslima
Copy link
Collaborator

thomaslima commented Mar 13, 2018

Ok that fixed the initial error. But now when I open klayout->Properties, I get an application crash handled by klayout.

screen shot 2018-03-13 at 18 51 33

backtrace:

Signal number: 11
Address: 0x0
Program Version: KLayout 0.25.1 (2018-03-13 r6240f14)

Backtrace:
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x2132ab _ZN3lay19SaltDownloadManager7executeEPNS_17SaltManagerDialogERNS_4SaltE
/usr/lib/system/libsystem_platform.dylib +0x1f5a _sigtramp
/usr/lib/system/libsystem_c.dylib +0x53e50 notify_check_tz
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x7dc12 _ZN3lay12CrashMessage14cancel_pressedEv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0xf4950 _ZN3lay14AlertLogButton17attention_changedEb
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0xf4502 _ZN3lay14AlertLogButton17attention_changedEb
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x21e5b8 _ZN3lay13salt_mine_urlEv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x21d70d _ZN3lay13salt_mine_urlEv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x1ada1e _ZN3lay12BookmarkList3addERKNS_19BookmarkListElementE
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore +0x21f36b _ZN11QMetaObject8activateEP7QObjectiiPPv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets +0x67f5 _ZN7QAction8activateENS_11ActionEventE
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore +0x217a31 _ZN7QObject5eventEP6QEvent
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets +0xfffd _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets +0x1139a _ZN12QApplication6notifyEP7QObjectP6QEvent
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x5668b _ZN3lay14GuiApplication6notifyEP7QObjectP6QEvent
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore +0x1ee798 _ZN16QCoreApplication15notifyInternal2EP7QObjectP6QEvent
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore +0x1ef938 _ZN23QCoreApplicationPrivate16sendPostedEventsEP7QObjectiP11QThreadData
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/PlugIns/platforms/libqcocoa.dylib +0x2a227 qt_plugin_instance
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/PlugIns/platforms/libqcocoa.dylib +0x2aaf1 qt_plugin_instance
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0xa3721 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x15d0ac __CFRunLoopDoSource0
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x86260 __CFRunLoopDoSources0
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x856dd __CFRunLoopRun
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x84f43 CFRunLoopRunSpecific
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x2fe26 RunCurrentEventLoopInMode
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x2fb96 ReceiveNextEventCommon
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x2f914 _BlockUntilNextEventMatchingListInModeWithFilter
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x41f5f _DPSNextEvent
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x7d7b4c -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x36d6d -[NSApplication run]
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/PlugIns/platforms/libqcocoa.dylib +0x298dd qt_plugin_instance
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore +0x1ea2be _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/QtCore.framework/Versions/5/QtCore +0x1eee91 _ZN16QCoreApplication4execEv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x5717b _ZN3lay14GuiApplication4execEv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_lay.0.dylib +0x55a5c _ZN3lay15ApplicationBase3runEv
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/./qt5.pkg.macos-HighSierra-release/klayout.app/Contents/MacOS/klayout +0xb069
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_rba.0.dylib +0x2273f _ZN3rba15RubyInterpreter10initializeERiPPcPFiS1_S3_E
/System/Library/Frameworks/Ruby.framework/Versions/2.3/Ruby +0x12baba rb_vm_fstring_table
/System/Library/Frameworks/Ruby.framework/Versions/2.3/Ruby +0x11d486 rb_vm_get_insns_address_table
/System/Library/Frameworks/Ruby.framework/Versions/2.3/Ruby +0x128012 rb_iseq_eval
/System/Library/Frameworks/Ruby.framework/Versions/2.3/Ruby +0x3516e ruby_exec_node
/System/Library/Frameworks/Ruby.framework/Versions/2.3/Ruby +0x35061 ruby_run_node
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/qt5.pkg.macos-HighSierra-release/klayout.app/Contents/Frameworks/libklayout_rba.0.dylib +0x226e3 _ZN3rba15RubyInterpreter10initializeERiPPcPFiS1_S3_E
/Users/tlima/Documents/Princeton/Prucnal/GitProjects/klayout-qt10/./qt5.pkg.macos-HighSierra-release/klayout.app/Contents/MacOS/klayout +0xa94d
/usr/lib/system/libdyld.dylib +0x1115 start
/usr/lib/system/libdyld.dylib +0xffff80009eae1001 start

@klayoutmatthias
Copy link
Collaborator

Hi Thomas,

that's strange .. the fix should be unrelated to anything else.

What "Properties" do you mean? I tried various ways to reproduce the issue but failed. I removed ~/.klayout and loaded a file. File/Layout Properties works as well as Edit/Properties, both in viewer or editor mode.

Any hints?

Thanks,

Matthias

@thomaslima
Copy link
Collaborator

Sorry. I meant Preferences. klayout -> Preferences. Or same bug trying to open the Macro Editor settings button.

@thomaslima
Copy link
Collaborator

To reproduce: open klayout without anything loaded. then open the macro development editor. then click the cogwheel button to open the setup page. crash.

@klayoutmatthias
Copy link
Collaborator

Hmm ... thanks for the clarification. I reason that this issue is related to the change, but I tried hard and still could not reproduce it. I checked various potential missing initializers but without success. Even faithful valgrind did not report any particular issues here. If memory corruption causes non-reproducible behaviour, valgrind is usually able to find that.

Also the stack trace is weird. The symbols seem to be messed up. Their sequence simply does not make sense. Either the stack trace symbols are wrong on MacOS or the symbol information inside the dylibs is bad.

Maybe it's worth trying a full rebuild.

Thanks and best regards,

Matthias

@thomaslima
Copy link
Collaborator

I'm sorry this is hard to reproduce. I have done that already. Didn't seem to go away. All I have confirmed is that commit 5fbc207 is the offending commit. I have reverted that and the program runs fine. I've tried qt 5.9.4 and qt 5.10, same result.
I agree that the backtrace is weird. Also note that the addr2line command does not exist on Mac. I've tried installing it from binutils but that doesn't help at all.

Seems like I have to debug this one my own. Do you have tips for improving that backtrace somehow? Printing things to terminal? That would help.
Feel free to close this issue and I will open another one. Or we can just keep this one open.

@thomaslima
Copy link
Collaborator

warnings while building on the layMacroEditorDialog.cc file. I always ignore those... but maybe?

In file included from ../../../src/lay/lay/layMacroEditorDialog.cc:26:
In file included from ../../../src/lay/lay/layMacroController.h:28:
In file included from ../../../src/laybasic/laybasic/layPlugin.h:32:
../../../src/tl/tl/tlClassRegistry.h:223:12: warning: instantiation of variable 'tl::Registrar<lym::MacroInterpreter>::instance' required here, but no definition is available [-Wundefined-var-template]
    return instance;
           ^
../../../src/tl/tl/tlClassRegistry.h:206:9: note: in instantiation of member function 'tl::Registrar<lym::MacroInterpreter>::get_instance' requested here
    if (get_instance ()) {
        ^
../../../src/lay/lay/layMacroEditorDialog.cc:546:101: note: in instantiation of member function 'tl::Registrar<lym::MacroInterpreter>::begin' requested here
    for (tl::Registrar<lym::MacroInterpreter>::iterator cls = tl::Registrar<lym::MacroInterpreter>::begin (); cls != tl::Registrar<lym::MacroInterpreter>::end (); ++cls) {
                                                                                                    ^
../../../src/tl/tl/tlClassRegistry.h:230:24: note: forward declaration of template entity is here
  static Registrar<X> *instance;
                       ^
../../../src/tl/tl/tlClassRegistry.h:223:12: note: add an explicit instantiation declaration to suppress this warning if 'tl::Registrar<lym::MacroInterpreter>::instance' is explicitly instantiated in another translation unit
    return instance;
           ^
../../../src/tl/tl/tlClassRegistry.h:96:25: warning: instantiation of variable 'tl::Registrar<lay::PluginDeclaration>::instance' required here, but no definition is available [-Wundefined-var-template]
    if (! Registrar<X>::instance) {
                        ^
../../../src/lay/lay/layMacroEditorDialog.cc:3495:52: note: in instantiation of member function 'tl::RegisteredClass<lay::PluginDeclaration>::RegisteredClass' requested here
static tl::RegisteredClass<lay::PluginDeclaration> config_decl (new MacroEditorPluginDeclaration (), 1500, "MacroEditor");
                                                   ^
../../../src/tl/tl/tlClassRegistry.h:230:24: note: forward declaration of template entity is here
  static Registrar<X> *instance;
                       ^
../../../src/tl/tl/tlClassRegistry.h:96:25: note: add an explicit instantiation declaration to suppress this warning if 'tl::Registrar<lay::PluginDeclaration>::instance' is explicitly instantiated in another translation unit
    if (! Registrar<X>::instance) {
                        ^
2 warnings generated.

@thomaslima
Copy link
Collaborator

Just tried a fresh build again. This time in your master branch, commit 02c9c64

Attaching the build log.

screen shot 2018-03-14 at 20 20 47

qt5.build.macos-HighSierra-release.log

thomaslima added a commit to lightwave-lab/klayout that referenced this issue Mar 15, 2018
@thomaslima
Copy link
Collaborator

I figured it out by using old binary search debugging. Turns out you cannot give 0 as a pointer address.

klayoutmatthias added a commit that referenced this issue Mar 16, 2018
@klayoutmatthias
Copy link
Collaborator

Hi Thomas,

many thanks for this solution. I understand perfectly now what's the problem. I'm still using Qt4 and Qt4's QSyntaxHighlighter allows the parent to be 0. Qt5 tries to dereference this pointer and the segfault happens. Too bad they modified their interface assumptions.

Let me just modify your solution a little: actually the macro editor configuration page should be independent of the IDE itself, so the MacroEditorDialog may not be instantiated at the time the dialog page is used.

The new patch is 1306229

Thanks a lot,

Matthias

@thomaslima
Copy link
Collaborator

Great! that fixed it. Does this solve Lukas's problem? Let me attach the build here (with qt5.10).

I've added the file klayout-0.25.1-macOS-HighSierra-1-Qt5101-3295b63.dmg to my Dropbox public folder.

@lukasc-ubc
Copy link
Author

Hi @thomaslima

I'm not sure if you are referring to the original issue I posted above, or the Qt issues...

Old version (Feb, Python 2), showing the problems with Qt and keys:
https://www.youtube.com/watch?v=x4n3CQV0d9E

Here is what I see on SiEPIC-Tools using the version you uploaded (klayout-0.25.1-macOS-HighSierra-1-Qt5101-3295b63.dmg). Graphics are working great!

Here is what I tested that is now working, i.e., you fixed:

  • screenshots appears correct
  • menu hotkeys continue working after dialog messages come
  • KLayout main screen rendering problems, after dialog boxes, working well.

http://www.youtube.com/watch?v=UbDsoy7h2es

Thank you very much!
Lukas

@thomaslima
Copy link
Collaborator

Awesome! Good to know. Thanks for the videos. I am referring to the original issue about the exceptions being caught by the macro editor. I wonder if Matthias’s addition of an ignore button and an ignore list helps.

@lukasc-ubc
Copy link
Author

lukasc-ubc commented Mar 17, 2018 via email

@klayoutmatthias
Copy link
Collaborator

Hi Lukas,

Right now, you can just clear it :-)

I felt that you would usually just fill the list by walking through your code and redoing this wasn't difficult.

Matthias

@thomaslima
Copy link
Collaborator

Here’s what I guess it’s happening. He wants some python modules to be shipped with SiEPIC. But because he can’t control the user’s python site packages, he just included the source code of these modules in the path of siepic. So he wanted their exceptions to not be caught from day zero for the user.

Right now I’m working on shipping python and a site-packages folder inside klayout.app, so that you can install new packages to klayout with pip. I considered putting it in the .klayout folder but that might be unstable for the user during klayout upgrade.

@lukasc-ubc
Copy link
Author

lukasc-ubc commented Mar 18, 2018 via email

@thomaslima
Copy link
Collaborator

I believe this issue can be closed. @lukasc-ubc check #100 !

netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this issue Jul 24, 2018
* Use Qt 5 instead of Qt 4

Changelog:
0.25.3          (2018-05-03):

* Enhancement: Compile option to use libcurl instead of QtNetwork
       This workaround enables builds on the native CentOS6
       configuration with the package manager functional.
* Enhancement: Pass label (text) layers through DRC script
       The "labels" method now allows copying labels from a layer
       to the output.
* Enhancement: New "split" method for polygons
       This method will fragment the polygons into two or more
       smaller parts for reducing their vertex count.
* Enhancement: New "dtrans" method for RecursiveShapeIterator
       This method delivers the transformation in micron unit space
* Enhancement: New "insert" methods for Shapes
       Shapes can now insert from another Shapes container and
       from a RecursiveShapeIterator. Possible applications are
       fast flattening and fast region selection.
* Enhancement: New method to generate RDB items from shapes
       RdbItem#add_value from a shape, RdbDatabase#create_items
       from a shapes container or recursive shape iterator and
       RdbDatabase#create_item from a shape.
* Enhancement: DXF and CIF "keep layer names"
       If this option is set in the reader options, layer names
       are not translated into GDS layer/datatype pairs.
       Specifically a layer called "L5" for example is not
       translated to 5/0 and to "L5D0" on output correspondingly.
       The buddy script option is "--keep-layer-names".
* Enhancement: DXF contour joining accuracy
       On the DXF reader's options, a contour joining accuracy
       can be specified. Small gaps smaller than this accuracy
       will be closed when forming joined contours from edges.
       The buddy script option is --dxf-contour-accuracy=value.
* Bugfix: DXF display issue
       In some cases, DXF cell instances did not trigger bounding
       box update and the cells only got visible after save and
       load.
* Bugfix: XOR progress is more realistic
       The progress is updated after the layer has been computed,
       not before.
* Bugfix: KLayout/klayout#117
       DTrans#itype was broken.
* Bugfix: KLayout/klayout#116
       Fixed a polygon decomposition bug when writing GDS files
       with big polygons with many holes. As a side effect, the
       polygons with many holes computed by a NOT operation for
       example are less complex and spikes in the cutlines are
       avoided.
* Bugfix: KLayout/klayout#115
       Reader options were not persisted.
* Bugfix: KLayout/klayout#114
       Custom line styles not loaded from tech's layer properties
       file.
* Enhancement: KLayout/klayout#113
       The XOR tool has an option now to heal result shapes which
       cross tile boundaries. The result shape count of tiled
       and non-tiled mode should basically be the same then.
* Bugfix: KLayout/klayout#112
       Salt package repository relative paths have not been working.
* Bugfix: KLayout/klayout#109
       Issues with Python 3 and shape properties - property
* Bugfix: KLayout/klayout#108
       Bugfix on Box#enlarge and Box#moved for empty boxes.
       keys generated with Python 3 could not be written to GDS2.
* Bugfix: KLayout/klayout#107
       Undo not working with shapes.
* Enhancement: KLayout/klayout#106
       Search & replace help page enhancements.

0.25.2          (2018-03-20):
* Bugfix: KLayout/klayout#90
      DRC: "extended" was not working as expected with "joined = true"
* Bugfix: KLayout/klayout#89
      Display issue on MacOS fixed
* Enhancement: KLayout/klayout#85
      IDE debugger: files can be excluded from showing exceptions when
      they are thrown. To exclude a file press the new "Ignore" button
      when the debugger tells you an exception has been generated.
      To re-able exception reporting, clear the list of the files
      in the IDE settings ("Debugging" tab)
      The macro IDE settings can now be edited in the File/Setup
      dialog.
* Bugfix: KLayout/klayout#94
      Retina displays are support to some extend on MacOS.
      An open topic is the quality of the icons.
* Enhancement: build system for MacOS

0.25.1          (2018-02-23):
* Enhancements: build compatibility with MacOS and Qt 5.9.
      Qt 4.6 supported now as well with one restriction:
      the package installation feature is not working.
* Bugfixs: Package manager
       - Remove button wasn't enabled if multiple packages were selected
       - A potential crash ob removing packages was fixed
* Enhancement: 64 bit coordinate support enabled on Windows builds
* Further bugfixes: See links
       - KLayout/klayout#21 (Autorun(-early) doesn't seem to run when lym files are inside a package)
       - KLayout/klayout#24 (Text insert dialog bug - Ok button isn't working)
       - KLayout/klayout#26 (Exceptions are reported every time they propagate up in the call chain in the ruby debugger)
       - KLayout/klayout#28 (CIF format detection failed)
       - KLayout/klayout#30 (Writer options dialog non-functional on a fresh configuration)
       - KLayout/klayout#32 (Rounding issue with instance properties)
       - KLayout/klayout#33 (Plugin factory not working when using with Python)
       - KLayout/klayout#36 (Hardening against destruction of object inside event handler)
       - KLayout/klayout#39 (Action cannot be reassigned)
       - KLayout/klayout#40 (Crash in Python binding)
       - KLayout/klayout#41 (Polygon#touches? issue)
       - KLayout/klayout#42 (Headless mode support with Qt5/-zz)
       - KLayout/klayout#43 (Crash when using Qt specific command line options)
       - KLayout/klayout#44 (Transformation constructor with x,y not working)
       - KLayout/klayout#45 (Partial selection does not capture instance)
       - KLayout/klayout#48 (Cancel does not reset current tool)
       - KLayout/klayout#51 (Segmentation fault on return to main window and other opportunities)
       - KLayout/klayout#53 (Unreadable 'about' text)
       - KLayout/klayout#62 (QXmlSimpleReader#parse cannot be called)
       - KLayout/klayout#63 (Wrong output on DRC non_interacting with empty second input)
       - KLayout/klayout#64 (Crash on exit)
       - KLayout/klayout#68 (OASIS reader issue with degenerated shapes)
       - KLayout/klayout#69 (DRC: 'inside' does not merge shapes of second input)
       - KLayout/klayout#71 (Target cell argument is required)
       - KLayout/klayout#72 (Edges/Region NOT issue)
       - KLayout/klayout#73 (Allow 'change layers' on PCells which support a single layer parameter)
       - KLayout/klayout#74 (Small-corner boolean issue)
       - KLayout/klayout#75 (Python PCell issue when parameters are called 'layer')
       - KLayout/klayout#79 (Replace function enabled also for read-only macros)
* Further enhancements: see links
       - KLayout/klayout#29 (Permissive mode for OASIS writer on odd-width paths)
       - KLayout/klayout#59 (Async download of package index and details)
       - KLayout/klayout#66 (Authentication dialog indicates retry)
       - KLayout/klayout#77 (Layout#copy_tree now works in non-editable mode too)

0.25            (2017-11-04):
* Enhancement: Menu customization
      Menu items can be disabled or enabled now. The former
      "Key Bindings" configuration page has been turned into
      "Menu Customization". Check boxes allow enabling or
      disabling of menu items. Disabled menu items are not
      shown.
      A search filter allows quick selection of menu items
      by title or path.
* Enhancement: The cell tree no longer is collapsed on edits
      or when the sorting order changes.
* Enhancement: Using a special menu path, macros can be
      configured to appear in submenus now.
* Enhancement: KLAYOUT_HOME environment variable to
      control the location of the application folder.
      The application folder is the place where KLayout
      keeps the configuration, macros, packages and
      other things.
* Enhancements: Major overhaul of the build environment
      - Qt5 supported now
      - Employs qmake as build system
      - Reorganisation of the sources
      - Continuous integration enabled (unit tests
        integrated in .pro files, JUnit output etc.)
      - Compatible with the clang compiler
* Enhancements: Buddy tools: KLayout now comes with a set of
      additional executables that provide some functionality
      subset in a lean way. These binaries are named "strm..."
      and are installed along with KLayout.
      - strm2cif: converts any format to CIF
      - strm2dxf: converts any format to DXF
      - strm2gds: converts any format to GDS2
      - strm2gdstxt: converts any format to GDS2/text
      - strm2oas: converts any format to OASIS
      - strm2txt: converts any format to plain text (internally)
      - strmclip: creates a clip from a file
      - strmcmp: compares two files (logically)
      - strmxor: compares two files (geometrically)
      For more information, use the "-h" or "--help" option.
* Enhancements: HTTPS support for loading files from URL's directly
* Enhancements: Numerous enhancements and optimizations in the RBA/pya
      area and in the debugger.
* Enhancements: KLayout notifies the user when a file was changed and
      asks whether to reload.
* Enhancements: "File cell or layer": type into the cell or layer list to jump to the
      cell name typed.
* Enhancements: Advanced search features in the filter entry box
      for the cell selection form: Case sensitive/insensitive,
      glob pattern, clear button.
* Enhancements: Tree expansion icons have a better contrast now on Windows
      with dark background.
* Enhancements: Forward and backward navigation buttons in the main window.
      These buttons jump to the previous or next display state:
      zoom window, hierarchy depth, etc..
* Enhancements: A Package manager is provided. Packages are add-ons for
      KLayout and can include macros, script libraries, fonts
      for the TEXT PCell, technologies, DRC scripts etc.
      Packages can be published on GitHub or any server
      supporting WebDAV. After registering a package, users
      can install or update packages with a few clicks.
      For more information see https://github.com/klayoutmatthias/klayout/wiki
      or "About Packages" in the "Various Topics" area of the main
      documentation. The package manager is found in the "Tools"
      menu under "Manage Packages".
* Enhancements: LEF/DEF reader:
       - Compatibility fixes with version 5.8
       - Regions and Groups are supported now
       - LEF/DEF is a standare format now and
         can be used with "File/Open" for example.
* Enhancement: DXR reader supports variable path widths now
* Enhancement: XOR provides graphical progress
* Enhancements: Libraries can be associated with a technology. Only libraries
      associated with the selected technology are shown in the selection
      dialog.
* Enhancements: Overlapping instances are easier to select now (instance
      selection cycling).
* Enhancements: Many more methods in RBA/pya. For example:
       - Ability to directly insert "D" types (such as DBox
         into layouts and cells.
       - RBA::RecursiveShapeIterator now supports complex (non-rectangular)
         search regions
       - A more consistent type framework (consistent complex transformation
         types, vectors)
       - More intuitive interface in certain objects (i.e. CellView,
         LayerPropertiesNode, Annotation etc.). Changing an attribute
         usually has an immediate effect on the respective property now
         ("live objects")
       - Hash functions for certain objects - Box, Edge, Trans, Polygon,
         and other objects can be used as dictionary keys now.
       - New import methods for Region, EdgePairs and Edges
       - New features for LayerMapping and CellMapping
       - Multiple selected cells in LayoutView
       - RBA::TextGenerator to supply the Basic.TEXT PCell's
         functionality as static feature
       - Receivers can be added to signals and removed from
         signals now.
       - Individual instance iterator for CellInstArray
       - ...
* Enhancements: Enhanced layout statistics form with detailed shape
      statistics.
* Enhancements: Line styles (dashed, dotted etc.) available now.
      Works best with manhattan layouts.
* Enhancements: "Marked box mode": boxes are drawn with a cross.
* Enhancements: Arbitrary pattern size for custom fill pattern (no
      limited to multiples of 8). Max size is 32x32.
      Enhanced annotations:
       - Ellipses
       - Position markers
       - Text alignment
       - "Auto measure" rulers (place a ruler measuring the
         distances between adjacent objects with a single
         click)
* Enhancements: DRC enhancements:
       - Text support
       - "smoothed" function
       - "layers" function delivers all layers read
       - Polygon with edge interactions
       - middle and extent_refs methods for center point and other
         references
       - "corners" function
       - "collect...", "select" and "each" methods
* Enhancements: GDS2 paths can now use the MultiXY extension too.
* Enhancements: X2 Support for Gerber import.
* Enhancements: A function to reset the window state after the
      window has been misconfigured (i.e. detaching or closing
      the dockable windows). This feature is found in
      View/Restore Window.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants