GlobalLibraries and PreloadedFootprints each have deep object
hierarchies that take noticeable time to destroy during shutdown.
Since the OS reclaims all process memory anyway, running these
destructors is wasted work. The new LEAK_AT_EXIT template wrapper
heap-allocates the wrapped object on first access and never frees it,
speeding up program exit.
When built with address sanitizer, it uses __lsan_ignore_object to
prevent false positive leak reports. Also added a valgrind
suppression file for the same purpose.
Add mutex protection to ZONE class to fix data races during parallel zone
filling and DRC operations. The m_FilledPolysList and m_layerSet members
are now protected with dedicated mutexes.
- Add m_filledPolysListMutex to protect m_FilledPolysList access
- Add m_layerSetMutex to protect m_layerSet access
- Protect SetFilledPolysList, GetFilledPolysList, GetFill
- Protect HasFilledPolysForLayer, TransformShapeToPolygon
- Protect TransformSolidAreasShapesToPolygon, GetEffectiveShape
- Protect HitTestFilledArea, BuildHashValue, CacheTriangulation
- Protect GetLayerSet, SetLayerSet, SetLayerSetAndRemoveUnusedFills
- Protect GetLayer, GetFirstLayer, IsOnCopperLayer
- Protect ViewGetLayers, IsOnLayer
- Update GetFillFlag and SetFillFlag to use m_fillFlagsMutex
- Make arc_tolerance_factor arrays thread_local in SHAPE_POLY_SET::inflate2
and inflateLine2 to avoid races during parallel zone filling.
- Remove redundant m_maxError assignment in ZONE_FILLER::fillCopperZone
since it's already initialized in the constructor. This prevents multiple
threads from writing to the member variable concurrently.
- Add mutex protection to FOOTPRINT::GetBoundingBox to synchronize cache
access when multiple threads compute bounding boxes concurrently.
Suppresses known false positives from:
- GLib/GIO/GObject: DBus implementation and memory allocation races
- Pango/Fontconfig: Font caching thread races
- GObject type system: Lock order warnings during type registration
Use this by setting TSAN_OPTIONS="suppressions=tools/tsan.supp"
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
Many characters have doubled-up or broken
strokes. There are thousands, but fix a few of the most
common ones (e.g. numbers, colours, a few electronic
terms)
This means you don't have to keep referring to a Unicode
table to know which character is where - you can see it in the
list and use the symbol search system.
No change to generated output (such suffixes are stripped by the
fontconv.py script).
Found via `codespell -q 3 -S *.po,./thirdparty,./Documentation/changelogs -L aactual,acount,aline,alocation,alog,anormal,anumber,aother,apoints,aparent,aray,ba,busses,dout,einstance,leaded,modul,ontext,ot,overide,serie,te,,tesselate,tesselator,tht`
Script added to generate dark theme from light.
Target colors can be adjusted and then icons can be
re-generated until we're happy with the starting point,
then individual icons can be tweaked.
It served us (mostly) well for more than a decade. It helped KiCad grow
before the std:: came into decent shape or speed. It was a good little
list.
RIP DLIST 2008-2020