1Recent Changes in Lepton EDA
2============================
3
4This file documents important user-visible changes in Lepton EDA.  For
5more information, please consult `git log` history.
6
7
8Notable changes in Lepton EDA 1.9.17 (20211219)
9-----------------------------------------------
10
11### General changes:
12
13- All Lepton tools now support attributes with empty values.
14
15### Changes when building from source:
16
17- Support for Guile 2.0 has been dropped.
18
19- Lepton now requires GTK 3.2.0 or later versions for build with
20  GTK3 support.
21
22### Changes in `liblepton`:
23
24- Support for dlopening foreign libraries used in Lepton by Scheme
25  code has been improved so that Lepton could find the necessary
26  libraries even if there is no development files for them
27  installed on user's system.  This fixes the issue of finding
28  libraries by Guile on systems like Debian and its derivatives.
29  Guile requires library names to end up with standard exstensions
30  like `.la` or `.so`.  On Debian, for example, library names may
31  have some version numbers appended to them and symlinks with
32  canonical names are distributed in separate development
33  packages.  One portable solution of the issue is using
34  `ldconfig` for obtaining the names of the existing library
35  files.  The tool can be now used on the `./configure` stage of
36  Lepton compilation to hardcode the names in Scheme.  A new
37  environment variable, `USE_LDCONFIG`, has been introduced to
38  make use of this approach.  To trigger retrieving the names,
39  just do: `./configure USE_LDCONFIG=/sbin/ldconfig ...`
40
41- The following core Scheme modules written in C have been removed
42  and their functions have been reimplemented using Scheme FFI:
43  - `(lepton core attrib)`
44  - `(lepton core component)`
45  - `(lepton core config)`
46  - `(lepton core page)`
47  - `(lepton core rc)`
48
49### Changes in `lepton-schematic`:
50
51- Support for GTK3 *smooth* scrolling events has been added in the
52  GTK3 version of the program.
53
54### Changes in `lepton-cli`:
55
56- The program has been rewritten in Scheme and splitted up into
57  four separate utilities that provide different functionality
58  which was previously built-in in one binary of the tool:
59  - `lepton-config` provides facilities for working with Lepton
60    configuration system,
61  - `lepton-export` deals with exporting of schematics and symbols
62    into various image formats,
63  - `lepton-shell` provides the interactive Scheme REPL and,
64  - `lepton-cli` is a tool that can launch all the above utilities
65    using corresponding commands `config`, `export`, and `shell`,
66    as before.
67
68- The new Scheme `lepton-cli` utility, unlike the previous code,
69  does not allow for merely skipping `--` just after command name
70  in the command line and behaves the same way like Guile does,
71  that is, interprets all options after `--` as file names.
72
73- `lepton-cli config` now does check if the specified directory
74  exists and reports if it does not, returning non-zero exit
75  status.
76
77- Redundant arguments on the `lepton-cli config` invocation are no
78  longer ignored.  Instead, the command prompts the user of what's
79  happening and exits with non-zero exit status.
80
81- More consistent processing of the option `-p` has been
82  implemented in `lepton-cli config`.  `-p` can be now used in two
83  forms, `-pPATH` or `-p PATH`, that is, it is processed the same
84  way with or without space.  On the contrary, its long version,
85  `--project`, can only be given as `--project=PATH`.  Ambiguous
86  form `-p=PATH` which may suggest that a project directory name
87  is equal to `=PATH`, is now disallowed as an extension not
88  conforming to POSIX and GNU standards.  On the other hand, the
89  ambiguity of the expression `-p path` has been eliminated: if
90  the option `-p` is not the last command line argument, the next
91  argument is considered to be belonging to it and means a project
92  directory path, *not* a configuration group name.
93
94- `lepton-cli config` now warns the user if the directories given
95  in the command-line are missing.  Previously, it could output
96  misleading messages about other errors, e.g., that the user may
97  specify only one configuration store.
98
99- In `lepton-cli config`, an argument is now required by the
100  options `-s` and `-u`, so using any combination of them in
101  series without a file name argument leads to errors about wrong
102  file names.
103
104### Changes in `contrib`:
105
106- Utilities `gsymupdate` and `gschupdate` have been replaced with
107  a new utility, `lepton-update`, written in Scheme.  The old
108  utilities parsed schematic and symbol files directly, which
109  sometimes could lead to wrong results, and were broken since
110  introducing `lepton-embed`.  The new tool, as many others in the
111  suite, uses `liblepton` and does better job when updating
112  obsolete files.  Please see *lepton-update(1)* for more.
113
114
115Notable changes in Lepton EDA 1.9.16 (20210731)
116-----------------------------------------------
117
118### General changes:
119
120- Compilation warnings on running Lepton utilities written in
121  Scheme, which shown up in the previous release, have been fixed.
122
123- Several symbols in the `sym/analog` have been fixed by adding
124  missing `footprint`, `value`, and `symversion` attributes.
125
126- Test schematics for netlister have been made self-sufficient by
127  adding symbols they depend on.
128
129- A new integration test suite written in Scheme has been added to
130  unify testing of all Lepton utilities in future.
131
132### Changes when building from source:
133
134- Versions of `Cygwin` libraries are now updated automatically.
135
136### Changes in `liblepton`:
137
138- Several Scheme functions related to source libraries have been
139  fixed or improved as follows:
140  - The function `source-library-search()` no longer adds wrong
141    directories with duplicated root name.
142  - The functions `source-library()`, `source-library-search()`,
143    `reset-source-library()` now return the value of the default
144    source library record.
145  - The functions now check the type of their arguments and raise
146    `'wrong-type-arg` exception if it is wrong.
147
148
149### Changes in `lepton-schematic`:
150
151- Several status bar indicators have been made interactive.  Now,
152  the user can change the *rubber band* and *magnetic net* modes
153  and sizes of grid and snap simply by clicking on the indicators.
154
155### Changes in `lepton-netlist`:
156
157- The output of the `switcap` netlister backend which was broken
158  for several years is now fixed according to its documentation.
159
160
161Notable changes in Lepton EDA 1.9.15 (20210626)
162-----------------------------------------------
163
164### General changes:
165
166- The test suite has been fixed and now `make distcheck` can
167  be run under the `root` user account without errors.
168
169- Lepton now fully supports GTK 3.0.0:
170  - Several warnings on functions deprecated in GTK/GDK 3.0.0 have
171    been fixed.
172  - See also changes in `lepton-schematic` below.
173
174- A bug with visual representation of arcs in raster images and on
175  canvas of `lepton-schematic` has been fixed.
176
177- All Lepton utilities, even the GUI ones, no longer use
178  `liblepton` as a Scheme extension.  Now the libraries are
179  properly dynamically loaded by Scheme as any other libs.
180
181
182### Changes when building from source:
183
184- Fixed building with `--disable-attrib`: the `bin/lepton-attrib`
185  script is no longer installed.
186
187- Versions of `Cygwin` libraries have been updated to match actual
188  versions of `liblepton`, `libleptongui` and `libleptonattrib`.
189
190### Changes in `liblepton`:
191
192- Several core C structs in the library have been amended to
193  contain only relevant information about primitive objects.
194
195- The following core Scheme modules written in C have been removed
196  and their functions have been reimplemented using Scheme FFI:
197  - `(lepton core deprecated)`
198  - `(lepton core object)`
199  - `(lepton core os)`
200
201- A new module, `(lepton object type)`, has been introduced.  It
202  now contains functions from `(lepton object)`, and exported in
203  that module as well, that query the type of primitive Lepton's
204  objects.
205
206- Definitions of foreign functions are now residing in a new
207  module, `(lepton ffi)`.  The module contains definitions of
208  Scheme counterparts of C functions in the `liblepton` library.
209
210- The Scheme function `platform()` no longer outputs `'(carbon)`.
211  There is no reasonable replacement yet, so the function outputs
212  `'(unknown)` on those Mac machines on which it usually did so.
213
214### Changes in `lepton-schematic`:
215
216- Snap size and grid size indicators now have separate labels
217  in the status bar. The snap size label changes its text color
218  and decoration to draw user's attention when snap size currently
219  set differs from the value in configuration. It helps avoiding
220  mistakes when constructing new symbols.
221
222- Lepton now fully supports GTK 3.0.0.  Apart from fixes mentioned
223  above the following changes have been made:
224  - A bug of not showing text of hidden attributes in the
225    **Multiattrib** dialog of `lepton-schematic` has been fixed.
226  - Displaying of tabs has been improved.
227  - Displaying of the **Object properties** dialog in the docked
228    view of the program has been fixed so all widgets are shown
229    properly now.
230
231Notable changes in Lepton EDA 1.9.14 (20210407)
232-----------------------------------------------
233
234### General changes:
235
236- The output of `--help` and `--version` command line options for
237  all utils has been unified and simplified: reduced long lines,
238  added links to Lepton's issue tracker and home page as well as
239  copyright information.  The options have been added to the
240  programs that missed them.
241
242- Several changes have been made in the directory layout of the
243  repository:
244  - Directory with examples for `gmk_sym` has been moved to
245    `contrib/` in where the script actually resides.
246  - The program `lepton-renum` has been moved to `contrib/`.
247  - The following scripts have been moved with tests, examples and
248    documentation to dedicated directories under `utils/`:
249    - `lepton-archive`
250    - `lepton-attrib`
251    - `lepton-cli`
252    - `lepton-embed`
253    - `lepton-netlist`
254    - `lepton-pcb_backannotate`
255    - `lepton-refdes_renum`
256    - `lepton-sch2pcb`
257    - `lepton-schdiff`
258    - `lepton-symcheck`
259    - `lepton-symfix`
260    - `lepton-tragesym`
261    - `lepton-upcfg`
262  - `m4` files used by `autoconf` have been renamed.
263  - `ChangeLog` files for Lepton tools are no longer generated.  A
264    toplevel `ChangeLog` file has been added with description of
265    where and how to get the information on changes.
266  - Empty `ChangeLog` files have been removed from `po/` directories.
267  - `.gitignore` files have been cleaned up.
268  - Several other documentation files have been moved from
269    `utils/` to `contrib/` or `docs/`, or removed.
270  - The contents of the `symbols/` directory has been reorganized
271    as well:
272    - Most of symbols have been moved to `symbols/sym`.
273    - Added the subdirectory `docs/` for documentation.
274    - Added the subdirectory `scheme/` for Scheme files.
275    - Directories with symbols that have names conflicting with
276      those living in the `sym/` subdirectory have been renamed
277      and are now prefixed with `sym-`.
278
279### Changes when building from source:
280
281- Fixed building of *doxygen* documentation.
282
283### Changes in `docs`:
284
285- Relatively new Scheme functions are now documented in the Lepton
286  EDA Scheme manual: `config?()`, `user-cache-dir()`,
287  `cache-config-context()`, and `anyfile-config-context()`.
288
289- Lepton EDA reference manual has been updated with info on
290  `lepton-cli` usage.
291
292- Fixed a link in Lepton EDA reference manual to the Lepton EDA
293  Scheme API manual in HTML format.
294
295- The contents of the file `nc.doc` about no-connection symbols
296  has been moved to the Lepton EDA reference manual.
297
298### Changes in `liblepton`:
299
300- The module `(lepton core smob)` written in C does no longer
301  exist.  Its exported functions have been reimplemented using
302  Scheme FFI.
303
304- Many of the basic Scheme functions in the `(lepton core object)`
305  module defined in the C code have been rewritten using plain
306  Scheme FFI.
307
308- Foreign functions in Scheme code have been renamed accordingly
309  to their C counterparts.
310
311- The files which names started with `geda_` have been renamed and
312  this prefix has been dropped.
313
314- The types which names were prefixed with `Geda` have been
315  renamed and now have the prefix `Lepton`.  Their sibling types,
316  e.g. `OBJECT` for `LeptonObject` have been removed.
317
318- The functions which names were prefixed with `geda_` have been
319  renamed so that their name are now start with `lepton_`.  Many
320  other functions related to objects have been renamed in similar
321  way as well.
322
323- The `component_embedded` field of the `LeptonObject` structure
324  has been renamed to `embedded` and moved to `LeptonComponent`.
325  Accessors for this field have been added to not use it directly.
326
327- Many new checks for object type have been added in functions
328  dealing with objects.
329
330- Object types are no longer queried explicitly in the code.  Type
331  accessors have been added which are used both in C and Scheme
332  FFI code.
333
334- Accessors for the `CHANGED` field of the renamed structure
335  `LeptonPage` have been added to facilitate using it in Scheme.
336
337- The following redundant types have been eliminated: `BOX`,
338  `OBJECT_END`, `OBJECT_FILLING`, `OBJECT_TYPE`, `PATH`,
339  `PICTURE`, `SELECTION`, `TEXT`, `TOPLEVEL`, `UNDO`, `sPOINT`.
340
341- The type `LeptonStroke` has been factored out of `LeptonObject`.
342  Its inherited fields have been renamed to match to corresponding
343  Scheme functions.  C accessors for each member of the new
344  structure have been added as well.
345
346- Several accessors for `LeptonObject` structure members have been
347  added.
348
349- Accessors for all fields of picture objects have been added.
350
351- The ad hoc object type `OBJ_PLACEHOLDER` has been eliminated.
352
353- Previously, some of the functions for new object creation had
354  the `type` argument.  The argument has been removed as
355  superfluous since it is always known which object is created.
356
357- Embedding code for pictures and components has been splitted up,
358  moved to appropriate places, and reduced.
359
360- Four unit tests that previously worked well with Guile 3.0.4
361  started to fail with Guile 3.0.5 on Debian.  The tests have been
362  fixed so they pass with either of the versions.
363
364### Changes in `libleptongui`:
365
366- Scheme module `(schematic core builtins)` defined in C code has
367  been removed.  Its functions are now defined in the module
368  `(gschem deprecated)`.
369
370- Gettext domain for the library has been renamed from
371  **lepton-schematic** to **libleptongui** to be consistent with
372  other tools.
373
374### Changes in `lepton-netlist`:
375
376- Fixed exporting of necessary modules in several Scheme files.
377
378- Several superfluous and erroneous `gafrc` files have been
379  removed from the `examples/` subdirectory.
380
381### Changes in `lepton-attrib`:
382
383- The program used to use colors to designate the visibility of
384  affected attributes in schematic editor.  A status bar with a
385  color legend has been added prompting the user of the meaning of
386  the colors used.
387
388- The current file name is now displayed in the title of the
389  program window.  If several files are open, "Multiple files" is
390  shown in the caption instead.  If there were changes in any of
391  the opened files, this is marked by an asterisk prepended to the
392  title caption.
393
394- Slot numbers are now explicitly displayed in parentheses with
395  the word "slot" after reference designators, e.g. **U1 (slot
396  3)** instead of **U1.3** as it was previously.  This is to
397  prevent confusion if the user actually wants to use dot
398  separators in refdeses.
399
400- Only those components that really have the `slot=` attribute are
401  now shown as slotted.
402
403- The overwrite confirmation dialog will now displayed on *File* →
404  *Export CSV* if an already existing file is selected for output.
405
406- Default response in the *Delete Attribute* dialog has been
407  changed to "No".
408
409- The *About* dialog has been improved and now it looks like one
410  in `lepton-schematic`.
411
412- Modification status update on saving has been fixed.
413
414### Changes in `lepton-schematic`:
415
416- The long command line option `--command` has been introduced as
417  an analog of the short option `-c`.
418
419- The program used to output backtraces on wrong command line
420  options.  Now backtraces are avoided.  Instead, a short error
421  message and a useful prompt are shown.
422
423- Fixed crashes when the command line contains the text as
424  follows: `-c '(quit)'`.
425
426- The behaviour of the combobox for choosing the way of symbol
427  insertion in the component selection dialog was broken in the
428  previous version and now has been fixed.
429
430- Text in several dialog titles has been improved, fixed, or
431  added.  In particular, the title of the close confirmation
432  dialog now shows the name of the program instead of "unknown".
433
434- Default response in the overwrite confirmation dialog is now
435  "No" to avoid accidental overwriting of files.
436
437- Color scheme error dialog was not shown previously. This has
438  been fixed.
439
440- The bus drawing tool supposed to behave the same way as the net
441  tool.  A click with the right mouse button cancels the net
442  action.  This did not work with bus actions, which is now fixed.
443
444- Modified schematic pages used to be shown as marked with an
445  asterisk in tabbed view.  Now, "Save" buttons are shown instead,
446  which allows the user to quickly save files with the mouse if
447  toolbars are turned off.
448
449- The tab buttons, "Save" and "Close" have now tool-tips
450  describing their functions.
451
452- The edit attribute dialog has been improved: now its section
453  "Add attribute" is collapsible, that is, it may get folded or
454  unfolded, which allows to see more attributes at once.  This
455  state is preserved during the program run.
456
457### Changes in `lepton-renum`:
458
459- Build date and time are no longer hard-coded in the sources to
460  aid reproducible builds.
461
462### Changes in `lepton-pcb_backannotate`:
463
464- Previously, the script code searched for the "Id" string in
465  itself and, being unable to find it, exited with the error
466  message "Could not determine version".  Now the script prints
467  Lepton version and copyright instead.
468
469- Refdes renaming has been fixed by exchanging parameters of the
470  `%cmd_rename` hash.
471
472- Deprecated `defined` construct that raised a fatal error since
473  Perl version 5.22 has been removed.
474
475- Man page of the script has been improved.
476
477Notable changes in Lepton EDA 1.9.13 (20201211)
478-----------------------------------------------
479
480Bugfix release.
481
482### Changes when building from source:
483
484- Build for Cygwin has been fixed in that the Lepton GUI tools now
485  actually work.
486
487- Fixed installation of images into the info directory.
488
489- File `color-map.scm`, removed in the previous release, has been
490  restored for backward compatibility.
491
492### Changes in `lepton-attrib`:
493
494- Two long standing bugs in the program, that manifested
495  themselves when the user deleted an attribute column in the
496  spreadsheet, have been fixed:
497  - The program did not prompt the user on unsaved changes on
498    exit.
499  - All invisible attributes became visible.
500
501### Changes in `lepton-gui`:
502
503- Fixed processing of options `-c` and `-s` broken in the previous
504  release.
505
506- Reduced the number of Help menu items pointing to obsolete wiki
507  documentation.
508
509
510Notable changes in Lepton EDA 1.9.12 (20201204)
511-----------------------------------------------
512### General changes:
513
514- Started creation of Lepton EDA reference manual.  The manual can
515  be opened from the `lepton-schematic` GUI by using <kbd>H</kbd>
516  <kbd>M</kbd> keyboard shortcut.
517
518- The empty `local` subdirectory has been removed from
519  the list of component libraries.
520
521- Old ChangeLog files (<=2007) are no longer installed.  They
522  hardly provide some any useful information for end users now and
523  any info can be easily received using git.
524
525### Changes when building from source:
526
527- Guile 3.0 support has been added.
528
529- Experimental GTK 3.0 support has been added.  A new `configure`
530  option, `--with-gtk3`, has been added to enable building
531  programs with GTK3.  Please see [README](README.md) for more
532  information.
533
534- Build with `-Wl,--no-undefined`, broken in the previous release,
535  has been revamped by merging two libraries, `liblepton` and
536  `libleptonrenderer`.
537
538- Build for Cygwin has been fixed as well by the above change.
539
540- The build option `--disable-attrib` broken in the previous
541  release has been fixed.
542
543- The obsolete and pretty useless script `bom_xref.sh` has been
544  removed from the toolset.
545
546### Changes in `liblepton`:
547
548- Code from the library `libleptonrenderer` has been merged into
549  `liblepton`.
550
551- A new module, `(lepton eval)`, has been added. The new module
552  exports Scheme versions of functions `eval-protected()` and
553  `eval-string-protected()` previously defined in C code.
554
555- A new module, `(lepton ffi)`, has been introduced.  It contains
556  general definitions related to Scheme FFI.
557
558- Refactored color system code:
559  - A new module, `(lepton color-map)` has been added.
560  - Procedures `print-color-map()`, `display-color-map()`, and
561    `display-outline-color-map()` have been moved to the module.
562  - The procedures now return their color-map values instead of
563    just `#t`.
564  - The module additionally exports the variable
565    `%color-name-map`.  It returns the set of valid symbols for
566    color names.
567
568- Print color maps for dark and light color schemes have been
569  fixed:
570  - The `grid` color name has been replaced with `dots-grid`.
571  - Missing colors `mesh-grid-major` and`mesh-grid-minor` have
572    been added.
573
574- Scheme functions working with version of the tools have been
575  added or refactored:
576  - Added procedure `lepton-version-data()` which can return the
577    list of version strings by requested symbol names.
578  - Added procedure `lepton-version-ref()` which retrieves one
579    version data element by its symbol name.
580  - Added generic procedure `display-lepton-version()`.
581  - `lepton-version()` has been refactored.  Please see its
582    docstring for more.
583
584### Changes in `lepton-schematic`:
585
586- C source code has been transformed into a new library,
587  `libleptongui`.  `lepton-schematic` is now an executable Scheme
588  script which uses Guile FFI to make the job done, allowing to
589  play with it without recompilation of the underlying C code.
590
591- Setting of the environment variable `LD_LIBRARY_PATH` may be
592  needed for users installing Lepton from sources if the system
593  configuration does not include the path to `libleptongui`.
594
595- Two new Scheme modules, `(schematic ffi)` and `(schematic ffi
596  gtk)`, have been added to the suite.  They provide Scheme FFI
597  bindings for GTK functions.
598
599- A new environment variable, **LIBLEPTONGUI**, has been added in
600  order the user to redefine the path to the `libleptongui`
601  library "on the fly".  This can be used, e.g., for test suite or
602  in development for testing changes without installation of the
603  library.
604
605- Scheme builtin action procedures that were defined in C code and
606  that were not available in some circumstances, e.g. in remote
607  REPL, are now available in the module `(gschem deprecated)`.
608
609- Three C functions for creating dialogs and their corresponding
610  Scheme counterparts have been re-implemented in Scheme using FFI
611  and renamed.  The new functions are exported in a new Scheme
612  module, `(schematic dialog)`. Those functions are:
613  - `schematic-message-dialog` (former `gschem-msg`)
614  - `schematic-confirm-dialog` (former `gschem-confirm`)
615  - `schematic-fileselect-dialog` (former `gschem-filesel`)
616
617- Guile module `(srfi srfi-37)` is now used instead of `(ice-9
618  getopt-long)` for command line option processing.
619
620- A new option, `--command`, can now be used as an alias for `-c`.
621
622- The keyword `G_` is now used for translation of strings in
623  Scheme code in order to prevent conflicts with other Guile
624  functions such as, e.g., `match()`.  It's the same change as one
625  that have been recently made in Guile 3.0.
626
627- Several new additional shortcuts have been added which are used
628  in many other programs to ease working with the tools for
629  newbies:
630  - <kbd>Control</kbd>+<kbd>N</kbd> for opening a new file
631  - <kbd>Control</kbd>+<kbd>O</kbd> for opening an existing file
632  - <kbd>Control</kbd>+<kbd>S</kbd> for file saving
633  - <kbd>Control</kbd>+<kbd>P</kbd> for printing the contents of a file
634  - <kbd>Control</kbd>+<kbd>Shift</kbd>+<kbd>Z</kbd> for redo (as
635    an inversion for <kbd>Control</kbd>+<kbd>Z</kbd> for undo)
636
637- Another bunch of additional shortcuts has been added to simplify
638  zooming for the same reasons:
639  - <kbd>=</kbd>, <kbd>Control</kbd>+<kbd>=</kbd>, and
640    <kbd>KP_Add</kbd> for zooming in
641  - <kbd>-</kbd>, <kbd>Control</kbd>+<kbd>-</kbd>, and
642    <kbd>KP_Subtract</kbd> for zooming out
643  - <kbd>0</kbd>, <kbd>Control</kbd>+<kbd>0</kbd>, and
644    <kbd>KP_Multiply</kbd> for zooming to extents
645
646- Filters behavior in the file chooser dialogs has been
647  improved. In the `Save As` dialog the filter is set based
648  on the current schematic's file name. Extensions containing
649  letters in different case are now correctly recognized,
650  filters can work with file names matching the following
651  shell patterns: `*.[sS][cC][hH]` and `*.[sS][yY][mM]`.
652
653- It is now possible to change a color of net and bus objects
654  in the `Object Properties` dialog.
655
656- All available colors are now shown in the colors combo box,
657  disabled ones are designated as "[ disabled ]".
658
659- Two new keywords, `symbol-attribs` and `pin-attribs`, have been
660  added to the `[schematic.attrib]` configuration group in order
661  to replace the functionality of the legacy procedure
662  `attribute-name()`.  The procedure is now exported in the module
663  `(schematic attrib)`.  See updated Lepton reference manual for
664  more information.
665
666- Fixed a regression in font displaying that appeared in the
667  previous Lepton version 1.9.11.  Now lower aligned text objects
668  are displayed the same way as before, their anchor points now
669  specify positions of their baselines rather than bottom lines of
670  the text logical rectangles.
671
672### Changes in `lepton-netlist`:
673
674- Two issues in the `tEDAx` backend have been fixed:
675  - Parametric attribute values containing spaces between the
676    parameters were passed un-escaped in the backend output.  Now
677    they are escaped according to [the tEDAx
678    spec](http://repo.hu/projects/tedax/syntax.html).
679  - Support for output of `nettag` net attributes, which had been
680    missing before, has been added.
681
682### Changes in `lepton-attrib`:
683
684- The source code of the program has been fixed so that it no
685  longer use a big change of obsolete third party spreadsheet
686  code.  Instead, a dependency on another up-to-date project,
687  `gtkextra`, has been added.
688
689- After the above change, another feature has been added.  Now,
690  you can try to install a new, experimental GTK3 interface of the
691  program.  Please see Lepton reference manual for more info.
692
693Notable changes in Lepton EDA 1.9.11 (20200604)
694-----------------------------------------------
695### General changes:
696- Executable scripts `lepton-netlist` and `lepton-symcheck` have
697  been moved to the *utils/* directory.  Their Scheme modules have
698  been moved to the directory with Scheme files of `liblepton`.
699
700- Separate *gettext* domains of `lepton-netlist` and
701  `lepton-symcheck` have been removed.
702
703- As a side effect of this transition, the messages by symbol
704  checker are now translated in `lepton-schematic` GUI.
705
706- More Scheme strings have been added to translation.
707
708- Two Scheme test suites, `liblepton`'s and `lepton-netlist`'s
709  ones, have been merged into one.
710
711- Unit test for promotable attributes has been added.
712
713- Old changelog files (*ChangeLog-1.0*) have been moved into one
714  directory and renamed.
715
716### Changes when building from source:
717- Build order has been changed and now `libleptonrenderer` is
718  built before `liblepton`.
719
720### Changes in `lepton-cli`:
721- The tool used to silently skip missing symbols on export without
722  rendering any placeholders. Rendering of placeholders has been
723  fixed.
724
725- In some cases, for instance, when a Scheme script was evaluated
726  by the tool and no renderer was available, it output assertion
727  failures for text objects during calculation of their bounds,
728  which has been fixed.
729
730### Changes in `lepton-netlist`:
731
732- Localization support has been added.  The utility had no
733  localization support since rewriting it in Scheme.
734
735- The famous Scheme backend `spice-noqsi` has been added to the
736  list of backends. The directory with examples contains now its
737  documentation and example schematics.
738
739### Changes in `lepton-symcheck`:
740
741- Localization support has been added.  The utility had no
742  localization support since rewriting it in Scheme.
743
744### Changes in `lepton-schematic`:
745- Log messages about `symversion` mismatch are no longer emitted
746for missing schematic symbols.
747
748- `symversion` attribute changes are now detected when a page is
749opened. Previous behavior was to check just the first page passed
750on the `lepton-schematic` command line.
751
752- Log messages related to `symversion` have been changed to be
753more compact and comprehensible.
754
755- Several dialogs and dock widgets now have shorter and more
756  uniform titles.
757
758- The "Major symbol version changes" dialog has been improved by
759making it more informative and non-modal. A new dialog instance
760is opened for each page with symbol version changes.
761
762- The dialogs "Add picture", "Select picture" and "Execute script"
763  now have file filters, which eases selection of supported files.
764
765- A new boolean configuration parameter has been added to the
766`schematic.gui` group: `use-toplevel-windows` ( `false` by default).
767Setting it to `true` allows the following widgets to behave like
768top-level windows (i.e. do not stay on top of the main window):
769  - Page manager
770  - Log window
771  - Edit text
772  - Color scheme editor
773  - Object properties
774  - Options
775  - Font selector
776  - Find text results
777
778- `lepton-schematic` now uses new (more compact) placeholders
779for missing schematic symbols. Traditional placeholders (giant
780red triangles with an exclamation mark and two lines of text)
781can be turned back on by setting the `small-placeholders` key
782in the `schematic.gui` group to `false`.
783
784- The same font, defined in the `font` configuration key of the
785  `schematic.gui` group, is now used for printing and rendering of
786  objects in GUI.
787
788- Several rendering issues, manifesting themselves on some modern
789  distributions where new Pango library (1.44) is used, have been
790  fixed:
791  - Different scaling of overbars on zooming.
792  - Wrong alignment and position of lower aligned text in printed
793    output.
794  - Changing of vertical spacing between paragraphs of text
795    separated with empty lines on zooming.
796
797- Historically, text lines of the same object size with different
798  size of glyphs, for instance, all uppercase and all lowercase,
799  might be rendered as if they have different baseline position.
800  For example, `-` (*minus*) and `_` (*underscore*) could be
801  rendered on the same height, depending on alignment.  This has
802  been changed, and now logical extents of text are used to
803  calculate and properly set its position.
804
805- Showing/hiding of hidden text can now be set individually on per
806  page view basis.
807
808### Changes in `lepton-upcfg`:
809- Fixed a logging issue when the utility is called with some file
810  path as a command line parameter.
811
812- The utility now has its own manual page `lepton-upcfg(1)`.
813
814### Changes in `lepton-attrib`:
815- The source code of the program has been transformed into a
816  library, `libleptonattrib`, and an executable script written in
817  Scheme.  Thus, C functions of the new library can now be used in
818  other tools.
819
820- The option `--quiet` has been removed.
821
822### Changes in `liblepton`:
823
824- The procedure `process-gafrc()` from the module `(netlist)` has
825  been moved to the module `(lepton rc)` to be available for other
826  utilities.
827
828- A new Scheme function, `anyfile-config-context()`, and its C
829  counterpart, have been added to the library.  In future, they
830  can be used to support additional configuration files, for
831  example, files containing color schemes or component library
832  descriptions.
833
834Notable changes in Lepton EDA 1.9.10 (20200319)
835-----------------------------------------------
836### General changes:
837- Utilities written in Python, `lepton-archive`, `lepton-tragesym`
838  and others (please see below for more information), have been
839  rewritten in Scheme or removed, so there is no dependency on
840  Python any more.
841
842- C source files, Scheme modules, types, functions, variables,
843  structure fields have been renamed to avoid using of ambiguous
844  word "**complex**" since it is used in Scheme to designate
845  complex numbers. The Scheme object type `'complex` has not been
846  renamed for backwards compatibility.
847
848- Two unused old scheme scripts `print-NB-attribs.scm` and
849  `list-keys.scm` have been removed.
850
851- Several other cleanups have been made in the source tree.
852
853- The Scheme auto-load subdirectory `gafrc.d`
854has been renamed to `autoload`.
855
856- Obsolete environment variables `GEDADATA` and `GEDADATARC` are
857  no longer used in Lepton.  Please use Scheme procedures `load`
858  or `primitive-load` in *gafrc* files to load your extensions.
859
860- The directory *$HOME/.gEDA/* is no longer used for storing of
861  user configuration files.  The new location for user config
862  files is *$XDG_CONFIG_HOME/lepton-eda/* (usually,
863  it is *$HOME/.config/lepton-eda*).
864
865- Legacy `geda*.conf` configuration files are no longer used.
866  Settings are now read from `lepton*.conf` files.
867  To convert your settings to new format, please use the
868  `lepton-upcfg` utility.
869
870- The obsolete and undocumented script `bompp.sh` has been
871  removed.
872
873### Changes when building from source:
874- The following obsolete `configure` options have been removed:
875  - `--with-kdedatadir` (for KDE 3)
876  - `--enable-relocatable` (non-portable)
877  - `--with-rcdir` (no longer usable)
878  - `--disable-deprecated` (no longer usable)
879  - `--enable-compat-symlinks` (does not make sense any more)
880
881- Detection of installed `Guile` run-time and development packages
882  has been improved. Previously, after introducing support for
883  Guile 2.2, some users could encounter difficulties with building
884  from source when Guile development headers were distributed in
885  separate packages in their distribution and there was two
886  different Guile versions (2.0 and 2.2) installed on their
887  systems.  They could get mysterious error messages about
888  applying a wrong object type.  Point is that Guile 2.0 and Guile
889  2.2 use incompatible binary code format for compiled programs.
890  Now Lepton build system checks what development packages are
891  installed on user's system and chooses a correct version of
892  Guile for compilation.  If it is impossible due to missing
893  required package, it reports the error on the configure stage.
894
895- The `autogen.sh` script, while still available, is no longer
896  required for installation from the git repository.  Please use
897  `autoreconf -ivf` instead.
898
899- Building of the Scheme API HTML documentation with multiple
900  make jobs on FreeBSD has been fixed.
901
902- `icon-theme-installer` script has been fixed by simplifying
903  its command line arguments checks, which makes it more portable
904  among various build environments.
905
906- The command `make maintainer-clean` no longer removes
907  *configure* and its helper files, as well as *ChangeLog* and
908  *Makefile.in* files.
909
910### Scheme API changes:
911- The module `(geda log-rotate)` has been renamed to `(lepton
912  log-rotate)`.
913
914- Several `(geda *)` modules have been renamed to `(lepton *)`
915  ones.  All the functions and variables available are still
916  re-exported in the former ones but their using is discouraged.
917  The following renames have been made:
918  - `(geda attrib)` => `(lepton attrib)`
919  - `(geda config)` => `(lepton config)`
920  - `(geda log)` => `(lepton log)`
921  - `(geda object)` => `(lepton object)`
922  - `(geda os)` => `(lepton os)`
923  - `(geda repl)` => `(lepton repl)`
924
925- The following *core* (written in C) Scheme modules have been
926  renamed:
927  - `(geda core attrib)` => `(lepton core attrib)`
928  - `(geda core complex)` => `(lepton core component)`
929  - `(geda core config)` => `(lepton core config)`
930  - `(geda core deprecated)` => `(lepton core deprecated)`
931  - `(geda core gettext)` => `(lepton core gettext)`
932  - `(geda core log)` => `(lepton core log)`
933  - `(geda core object)` => `(lepton core object)`
934  - `(geda core os)` => `(lepton core os)`
935  - `(geda core page)` => `(lepton core page)`
936  - `(geda core smob)` => `(lepton core smob)`
937  - `(geda core toplevel)` => `(lepton core toplevel)`
938
939- Apart from expanding environment variables, the function
940  `expand-env-variables` from the `(lepton os)` module now replaces
941  **~/** (user home directory prefix) in file names in order to
942  make such names understandable for other functions.  This allows
943  using this prefix in functions like `component-library` and
944  `source-library`.
945
946- A couple of functions have been added to the `(lepton object)`
947  module to work with object's "embedded" state:
948  `object-embedded?` and `set-object-embedded!`.
949
950- The **cache** configuration context can now be accessed in
951  Scheme code: `cache-config-context` function has been added
952  to the `(lepton config)` module.
953
954- A new function, `component-filename`, has been added to the
955  `(lepton object)` module. It returns the full component's symbol
956  file path.
957
958- `config-load!()` function in the `(lepton config)` module has been
959  modified to accept a new optional `boolean` parameter `force-load`,
960  which is `false` by default. Configuration is no longer reloaded
961  each time this function is called, unless you explicitly request
962  it by `#:force-load #t`.
963
964### Changes in `liblepton`:
965- The module `(lepton library component)` has been amended to
966  support new Scheme layer around internal `%component-library` in
967  the `component-library` procedure, which prevents loading of
968  duplicate component libraries.
969
970- The `bitmap-directory` `gafrc` option has been removed.
971
972- The `gafrc` options listed below have been deprecated
973and replaced with new configuration settings.
974Please refer to the [Deprecated Settings](https://github.com/lepton-eda/lepton-eda/wiki/Deprecated-Settings#user-content-deprecated-gafrc) wiki document.
975  - `bus-ripper-symname` => `[schematic]::bus-ripper-symname`
976  - `always-promote-attributes` => `[schematic.attrib]::always-promote`
977  - `keep-invisible` => `[schematic.attrib]::keep-invisible`
978  - `attribute-promotion` => `[schematic.attrib]::promote`
979  - `promote-invisible` => `[schematic.attrib]::promote-invisible`
980  - `make-backup-files` => `[schematic.backup]::create-files`
981
982- Fixed rotation of logs broken in Lepton 1.9.8.
983
984- Fixed two long standing bugs in the procedure
985  `component-library-search`:
986
987  - Failure of the procedure in some cases when the root directory
988    processed by the procedure contained symbol files.
989
990  - Failure of the procedure with the `'out-of-range` exception if
991    the processed path contained 2 identical components at the end
992    and trailing slash (e.g. "/path/sym/sym/").
993
994### Changes in `lepton-netlist`:
995
996- The module `(netlist rename)` has been removed.  All previous
997  renaming functionality has been wholly thrown away.
998
999- The module `(netlist pin-net)` has been removed.  `<pin-net>`
1000  records are no longer used in netlisting.
1001
1002- The module `(netlist traverse)` has been removed. All its
1003  functions have been moved to other appropriate modules.
1004
1005- New data structures, *hierarchical*, or *over-port*, or
1006  *vertical*, connections, have been introduced.  They are used to
1007  produce net names for schematics with subcircuits.  This fixed
1008  the issue with toplevel unnamed connections, using of which lead
1009  to wrong netlists, and resulted in the following changes in output
1010  netlists:
1011
1012  - The `geda` backend no longer displays intermediate renamings
1013    the same way it is used for unnamed nets shown in netlists.
1014    Renamed unnamed nets of a subschematic are shown by the geda
1015    backend differently, e.g.,
1016    "*hierarchical/subciruit/name/unnamed_net_at_XxY*", where X
1017    and Y are coords of one of their members.
1018
1019  - If a net has more than one preferred attribute attached
1020    ("*net=*" or "*netname=*"), the lowest one by means of the
1021    predicate `refdes<?` is chosen then.
1022
1023  - The sequence numbers of unconnected pins and unnamed nets have
1024    been reduced due to removing of internal ones from the
1025    sequence.
1026
1027- During netlisting, page contents is filtered once to make
1028  connections.
1029
1030- Hierarchical names are now used for subschematics.
1031
1032- A new field, `parent`, has been added to the
1033  `<schematic-component>` record to get hierarchical data.  For a
1034  component, it contains the link to the `<subschematic>` instance
1035  the component belongs to.
1036
1037- The `<schematic-connection>` record now also contains a new
1038  field, `parent`.  For a connection, it contains the link to the
1039  `<subschematic>` instance the connection belongs to.
1040
1041- The `<subschematic>` record now also contains a new field,
1042  `parent`.  It contains the component the `<subschematic>`
1043  belongs to, if any.
1044
1045- The unused `sources` field has been removed from the `<package>`
1046  record.
1047
1048- The unused `tag` field has been removed from the `<package>`
1049  record.
1050
1051- The <package-pin> record now contains a new field,
1052  `port-connection`, which holds a hierarchical
1053  `<schematic-connection>` a pin belongs to.
1054
1055- Crashes, when source file cannot be found, are now avoided.
1056
1057- Fixed crashes on power symbols (the symbols having one pin and
1058  no *"refdes="* attribute) having a *"net="* attribute but no
1059  *"pinnumber=* attribute attached to its pin.
1060
1061- Fixed crashes in the `spice-sdb` backend when processing I/O
1062  components.
1063
1064- Removed output of version in the `spice-sdb` backend.  It has
1065  not been updated since 2007 and does not reflect the changes in
1066  the backend code.
1067
1068- Fixed a link to documentation in the output of the `spice-sdb`
1069  backend.
1070
1071- A new module, `(netlist mode)`, has been added. It contains
1072  accessor functions for current netlisting mode.
1073
1074- A new module, `(netlist schematic-port)` has been added. It
1075  defines a new record, `<schematic-port>`, which contains info
1076  about connections via ports between hierarchical levels.
1077
1078- A new module, `(netlist schematic-named-connection)`, has been
1079  added. It contains functions for merging connections by net
1080  name.
1081
1082- A new module, `(netlist subschematic)`, has been added. It
1083  defines a new record, `<subschematic>`, which extends
1084  `<#geda-page>` internal C structure and contains various netlist
1085  related fields.
1086
1087- The `<package-pin>` record now has several new fields:
1088  - `net-map` is defined for virtual pins created from the
1089    *"net="* attribute.
1090  - `parent` contains link to the parent component of a pin.
1091
1092- A new field, `pins`, has been added to the
1093  `<schematic-connection>` record. For a connection object, it
1094  contains `<package-pin>` objects that belong to the connection.
1095
1096- A new field, `subschematic`, has been added to the `<schematic>`
1097  record. It contains toplevel multi-page `<subschematic>` of
1098  `<schematic>`, thus allowing recursive access to low level
1099  subschematics.
1100
1101- A new field, `subschematic`, has been added to the
1102  `<schematic-component>` record. It contains its parent
1103  `<subschematic> record.
1104
1105- A new field, `port`, has been added to the
1106  `<schematic-component>` record. The field contains port
1107  (`<schematic-port>` record) for components being port components
1108  in subcircuits.
1109
1110- A new field, `net-maps`, has been added to the
1111  `<schematic-component>` record.  It provides info on net mapping
1112  for the component pins.
1113
1114- A new field, `named-connection`, has been added to the
1115  `<package-pin>` record, which contains the parent
1116  `<named-connection>` of a pin instance.
1117
1118- Fixed wrong usage of the *"netname="* attribute instead of
1119  *"net="* when the `netname-priority` config setting is set to
1120  false (`#f`), that is, when *"net="* should be preferred.
1121
1122- Fixed issue with output of wrong warnings about renaming nets
1123  with the same name (shorted to themselves).
1124
1125- Previously, the program used to exit with error if some source
1126  file was not readable or missing, even in the interactive mode.
1127  Now, `lepton-netlist` just reports such errors as critical
1128  without exit.
1129
1130- The module `(netlist page)` has been eliminated in favour of the
1131  `(lepton page)` module.  All functions from the former have been
1132  moved to the latter.  The procedure `filename->page()` has been
1133  renamed to `file->page()`.
1134
1135- The unused Scheme module `(netlist repl)` has been removed.
1136
1137- Netlist backends can now set the desired netlist mode by defining
1138  a `request-netlist-mode` function, which should return either `'geda` or
1139  `'spice`. `lepton-netlist` no longer relies on the backend's filename
1140  when setting the operation mode.
1141
1142- The `spice-sdb` backend has been fixed to generate SPICE
1143`.MODEL` lines correctly.
1144
1145- The `--list-backends` command line option now has a short
1146equivalent: `-b`.
1147
1148### Changes in `lepton-archive`:
1149- The initial Python script has been rewritten in Scheme.  It was
1150  broken at least since 2007, when *system-gafrc* was refactored by
1151  removing `component-library` calls from it.  It parsed that file
1152  for the "component-library" strings, but could not find and save
1153  any stock symbols.  The new Scheme script has the following
1154  advantages:
1155
1156  - It eliminates issues with Python versions incompatibilities
1157    due to moving in most distributions to the more recent
1158    versions.
1159
1160  - The previous script could only expand one environment variable
1161    in a file name. Now all environment variables are expanded
1162    recursively in file names, the tilda prefix (**~**) is
1163    expanded, too.
1164
1165  - OS specific file name separator is now supported.
1166
1167  - The script replaces using of system utilites *cp*, *mv*, *rm*
1168    in most cases with appropriate Scheme procedures.
1169
1170  - Instead of direct parsing of component lines in schematic
1171    files (**"C x y ..."**), which may be wrong in some cases, it
1172    uses info on internal schematic provided by `liblepton`
1173    modules.
1174
1175  - The new script eliminates direct setting of any environment
1176    variables to the directory where `system-gafrc` should be
1177    placed, and parsing of the lines containing
1178    `component-library` and `component-library-search` in system
1179    rc files, as it is no longer required.
1180
1181  - `gafrc` is now used instead of `gschemrc` as rc file to
1182    update; local project's `gafrc` is processed to get info on
1183    component libraries used in the project.  `gafrc` in the
1184    resulting archive is changed in that to load symbols from its
1185    local cache directory.
1186
1187  - Symbol and SPICE file cache directory name has been changed
1188    from `gschem-files` to `cache`.
1189
1190  - The program can now collect and cache all symbols and
1191    subschematics in a hierarchical schematic, as well as
1192    subcircuits mentioned in the *"file="* attributes of
1193    components.
1194
1195  - RC file listing files to be archived is no longer used. The
1196    file set by the option `--files-from` (`-f`) is used
1197    instead. The script copies all files mentioned in that file
1198    and in command line to the archive, including files not living
1199    in the project directory.
1200
1201  - Lowercase archive name is now used by default:
1202    `project-archive.tar.gz` instead of
1203    `ProjectArchive.tar.gz`. It is to avoid issues with case
1204    sensitive filesystems.
1205
1206  - The program options now have long equivalents, please see
1207    `lepton-archive --help` for more information.
1208
1209  - The program now supports both absolute and relative source
1210    filenames (such as "*/tmp/simulation.cmd*") or using relative
1211    paths (like "*./*" or "*../*").
1212
1213  - Files missing in the source library are reported.
1214
1215  - The output archive file name can be specified without the
1216    "*.tar.gz*" suffix.  The users can just use `-o
1217    project-archive` to save their project to the
1218    *project-archive.tar.gz* file.
1219
1220### Changes in `lepton-schlas`:
1221- This utility has been rewritten in Scheme and renamed to `lepton-embed`.
1222- Its functionality has been extended: it can now embed/unembed pictures (`-p`)
1223  or components (`-c`) only, and may be instructed to leave source files intact,
1224  saving its output to a separate files with a given suffix (`-x`).
1225
1226### Changes in `lepton-cli`:
1227- A new command line option has been added for the `export`
1228  command: `--paper-names` (`-P`). It displays a list of paper
1229  size names suitable for the `--paper` option.
1230
1231- The default paper size is now defined in the system configuration
1232  files: the `paper` configuration key in the `export` and
1233  `schematic.printing` (`gschem.printing`) groups is set to `iso_a4`.
1234
1235- `lepton-cli config` can now read and write configuration
1236  stored in the **cache** configuration context: a new
1237  command-line option `--cache` (`-c`) has been added.
1238
1239### Changes in `lepton-tragesym`:
1240- The initial Python script has been rewritten in Scheme. The
1241  program now does anything the previous version did, and more:
1242
1243  - `liblepton` functions are now used to create objects instead
1244    of dealing with symbol text format directly.
1245
1246  - Fixed calculation of symbol width so that pins always touch
1247    symbol box even if the user specified too little width in the
1248    template file.
1249
1250  - Dealing with "spacer"s gives better results/notifications.
1251
1252- The man page of the program has been updated to provide
1253  information about the source file format.  Please see
1254  *lepton-tragesym(1)* for more information.
1255
1256### Changes in `lepton-schematic`:
1257- Several `(gschem *)` modules have been renamed to `(schematic
1258  *)` ones.  All the functions and variables available are still
1259  re-exported in the former ones but their using is discouraged.
1260  The following renames have been made:
1261  - `(gschem action)` => `(schematic action)`
1262  - `(gschem attrib)` => `(schematic attrib)`
1263  - `(gschem builtins)` => `(schematic builtins)`
1264  - `(gschem gschemdoc)` => `(schematic gschemdoc)`
1265  - `(gschem hook)` => `(schematic hook)`
1266  - `(gschem keymap)` => `(schematic keymap)`
1267  - `(gschem selection)` => `(schematic selection)`
1268  - `(gschem symbol check)` => `(schematic symbol check)`
1269  - `(gschem util)` => `(schematic util)`
1270  - `(gschem window)` => `(schematic window)`
1271
1272- The following modules were simply renamed without providing any
1273  backwards compatibility:
1274  - `(gschem core gettext)` => `(schematic core gettext)`
1275  - `(gschem repl)` => `(schematic repl)`
1276
1277- The following *core* (written in C) Scheme modules have been
1278  renamed:
1279  - `(gschem core attrib)` => `(schematic core attrib)`
1280  - `(gschem core builtins)` => `(schematic core builtins)`
1281  - `(gschem core hook)` => `(schematic core hook)`
1282  - `(gschem core keymap)` => `(schematic core keymap)`
1283  - `(gschem core selection)` => `(schematic core selection)`
1284  - `(gschem core util)` => `(schematic core util)`
1285  - `(gschem core window)` => `(schematic core window)`
1286
1287- Grips can now be turned on and off at run-time.
1288  Use the new 'Options → Grips: On/Off' menu item or
1289  <kbd>O</kbd>-<kbd>I</kbd> keyboard shortcut.
1290
1291- In the 'Select Component' dialog, it is now possible to copy
1292  names and values of attributes to clipboard.
1293
1294- In tabbed GUI, tabs can now be rearranged by dragging them
1295  with mouse.
1296
1297- A context menu with common actions (`New`, `Open`, `Save`,
1298  `Save As`, `Page Manager`, and `Close`) has been added to
1299  the active tab's header widget.
1300
1301- The main menu code has been refactored and changed so that the
1302  type of selected objects is taken into account.  Thus, some menu
1303  entries are not sensitive in some cases where it is
1304  inappropriate.
1305
1306- If *Help* → *Find Component Documentation* cannot find any
1307  documentation, a message box is displayed. No backtrace, nor
1308  Guile errors are printed to the log window.
1309
1310- All the `gschemrc` options are now deprecated, the settings have been migrated
1311  to new configuration system (`*.conf` files). Use `lepton-cli config` to read
1312  and modify them. New options have the same names and possible values (use
1313  `true`/`false` for booleans instead of `"enabled"` and `"disabled"`). Please refer
1314  to the
1315  [Configuration Settings](https://github.com/lepton-eda/lepton-eda/wiki/Configuration-Settings)
1316  document ("Deprecated Settings") for more information.
1317
1318- In the `Save As` dialog, the filter field now shows
1319file extensions (`.sch`, `.sym`). A file's extension in the
1320`Name` box is updated when the filter is changed.
1321
1322- Tree view columns in the `Page Manager` window are now
1323automatically resized. It helps when displayed paths are long:
1324the `Changed` column becomes visible again when you uncheck
1325the `Show full paths` checkbox.
1326
1327- The `file-preview` option (`[schematic.gui]` group) processing
1328has been fixed. The user can turn the preview area in the
1329`Open...` dialog on and off.
1330
1331- The user can now change the paper size and orientation in the
1332`Print` dialog. The combo boxes with these settings used to be set
1333to default values and disabled.
1334
1335- The context menu has been reorganized and updated.
1336
1337- Informational messages have been added to several
1338lepton-schematic dialog boxes.
1339
1340- An "untitled" page can no longer be reverted (`Page → Revert`).
1341This operation doesn't make sense for it and has been disabled.
1342
1343- A new configuration parameter has been added: `show-tooltips` in
1344the `schematic.tabs` group (`boolean`, `true` by default). It
1345enables or disables tooltips for tab header widgets in tabbed GUI.
1346
1347- The `Single Attribute Editor` dialog can now be accepted by
1348pressing the `Enter` key when the `Name` field is focused.
1349
1350- The save font configuration dialog has been improved so now it
1351  shows the name of selected font and full path names for
1352  configuration files.
1353
1354- The files *lepton-gtkrc* are now read from the system and user
1355  configuration directories. They can be used to customize the
1356  appearance of the program.
1357
1358- Fixed crashes on printing via the menu 'File → Print...' on some
1359  systems.
1360
1361- Fixed segfaults when the locale set by environment variables was
1362  not installed.
1363
1364- Fixed issue of incorrect main menu creation if system
1365  configuration file is missing.
1366
1367### Changes in `examples`:
1368- Three new examples of analog simulation have been added. They
1369  reside in the directory *netlist/examples/analog/*.
1370
1371- `RF_Amp` and `TwoStageAmp` examples have been updated to make
1372  SPICE simulation work properly.
1373
1374- `gTAG` example scripts and configuration files have been fixed.
1375
1376- Several `README` files have been updated.
1377
1378- The obsolete Python script `bom` has been removed.
1379
1380Notable changes in Lepton EDA 1.9.9 (20191003)
1381----------------------------------------------
1382### General changes:
1383- The version of the `libleptonrenderer` library has been fixed.
1384
1385- The utility `lepton-xyrs` has been removed from the distribution
1386  since it has not been maintained or changed for many years and
1387  it does not belong to schematic capture.
1388
1389### Changes in `liblepton`:
1390- Static gettext domain name is now used for translation files.
1391
1392### Changes in `lepton-netlist`:
1393- Two new procedures, `page-list->schematic` and
1394  `file-name-list->schematic` have been added to the `(lepton
1395  schematic)` module to provide users with more intuitive way of
1396  `<schematic>` record creation. The previously present procedure
1397  `make-toplevel-schematic` is still there, and has been made an
1398  alias of the latter. Its `netlist-mode` argument has been made
1399  optional and is `'geda` by default.
1400
1401Notable changes in Lepton EDA 1.9.8 (20190928)
1402----------------------------------------------
1403### Breaking changes:
1404- The configure switch `--disable-gattrib` has been renamed to
1405  `--disable-attrib`.
1406
1407### General changes:
1408
1409- A new configuration upgrade tool, `lepton-upcfg`, and C and
1410  Scheme infrastructure for it have been added to simplify moving
1411  to Lepton's new configuration system.  The new tool is aimed to
1412  convert legacy `geda*.conf` files into new `lepton*.conf` files
1413  by importing and renaming the settings in them.  For example, in
1414  order to produce `lepton-user.conf` from `geda-user.conf`, the
1415  user can use the command `lepton-upcfg --user`.  Additionally,
1416  the user can switch between using of legacy and new
1417  configuration system using a new function,
1418  `config-set-legacy-mode!()`, which may be set in some of Scheme
1419  files loaded by the tools.
1420
1421- The module `(geda library)` has been renamed to `(lepton library)`.
1422  All the functions and variables available are still re-exported
1423  in the former one but its using is discouraged.
1424
1425- Warnings about deprecated and "dead" RC functions are now more
1426  verbose, and contain link to Configuration Settings wiki page.
1427
1428- Several clean-ups in the code and documentation have been made
1429  in both libraries' and GUI tools' code, removed some unused
1430  function arguments.
1431
1432- A main category has been added into Lepton desktop
1433  files. According to
1434  https://specifications.freedesktop.org/menu-spec/latest/apa.html,
1435  previously there was no valid main category in the desktop
1436  files.  The problem is that without a main category, it is not
1437  possible to know for sure if a freedesktop compliant menu will
1438  show the applications the desktop files were made up for.  This
1439  has been fixed by adding "Development" as main category for
1440  Lepton. Two additional categories have been rearranged in order
1441  "Electronics" to have priority over "Engineering".
1442
1443- The following rc procedures are now exported in the module
1444`(lepton library)`:
1445
1446  - `component-library-command`
1447  - `component-library-funcs`
1448  - `component-library-search`
1449  - `component-library`
1450  - `reset-component-library`
1451
1452- The following rc procedures are now exported in the module
1453`(geda deprecated)`:
1454
1455  - `always-promote-attributes`
1456  - `attribute-promotion`
1457  - `bitmap-directory`
1458  - `bus-ripper-symname`
1459  - `keep-invisible`
1460  - `make-backup-files`
1461  - `print-color-map`
1462  - `promote-invisible`
1463  - `scheme-directory`
1464
1465- Symbols with duplicated names have been moved to separate folders:
1466
1467  - `share/lepton-eda/sym-gnetman`
1468  - `share/lepton-eda/sym-verilog`
1469  - `share/lepton-eda/sym-vhdl`
1470
1471  Now it's possible to use `gafrc` function `component-library-search`
1472  with `share/lepton-eda/sym` without getting tons of warnings about
1473  duplicated symbols in the log.
1474
1475- System-wide configuration file, `lepton-system.conf`, has been
1476  added to the distribution with default settings applicable for
1477  most installations.  Its legacy predecessor, `geda-system.conf`,
1478  has been added as well for backwards compatibility.
1479
1480- The location of log files has been changed to `$XDG_CACHE_HOME/lepton-eda/logs/`.
1481  Previously they were stored in the user's configuration directory.
1482
1483### Changes when building from source:
1484
1485- Building of the tools with Guile 2.2 is now supported.
1486
1487- Lepton now requires Glib 2.38.0 or later versions for build.
1488
1489- It is now possible to accelerate the tools some parts of which
1490  are written in Scheme when they are launched for the first time.
1491  Previously, on first running much time would be spent on
1492  compilation of Scheme code involved.  The startup time can be
1493  reduced if the code is compiled and installed in advance.  To
1494  make it work, a new `make` target, `precompile` has been added.
1495  While the command `make precompile` can be used for local
1496  builds, it could be much more convenient for end users if
1497  package managers working on packaging Lepton for some
1498  distributions "precompile" the code on the package building
1499  stage.  The technik of "precompilation" has been already
1500  implemented to make packages for FreeBSD:
1501  [FreeBSD port](https://github.com/graahnul-grom/freebsd-lepton-eda/tree/master/wip.pc)
1502  and [binary package](http://graahnul.beget.tech/lepton-eda-pc/lepton-eda-1.9.7.txz)
1503  made from it.  In essence, it included two steps:
1504
1505  - A relevant section has been added to the port's
1506    [`Makefile`](https://github.com/graahnul-grom/freebsd-lepton-eda/blob/master/wip.pc/Makefile), and
1507  - The list of compiled files has been added to the port's [`pkg-plist`](https://github.com/graahnul-grom/freebsd-lepton-eda/blob/master/wip.pc/pkg-plist).
1508
1509  Package managers of other distributions could adopt this
1510  technik.  Please see discussion at #339 for more information.
1511
1512- Fixed and improved *VPATH* (out-of-source) builds on some
1513  systems. It used to be that Lepton did not install files from
1514  the `docs/wiki/` subdirectory when the command `make install`
1515  was used, because it was assumed that the directory contained
1516  only regular files.  This has been fixed by changing appropriate
1517  Makefiles to search for symlinks as well.
1518
1519- Build errors on FreeBSD 13.0-CURRENT on the link stage in the
1520  `utils/gschlas/` directory have been fixed.  In earlier FreeBSD
1521  version Lepton EDA builds without errors.  The issue happened to
1522  appear due to changing of the default linker from GNU `ld` to
1523  `ld.lld` from the `llvm` distribution.
1524
1525- Fixed FreeBSD build errors on the `powerpc64` architecture with
1526  base system compiler gcc-4.2: (FreeBSD bug report
1527  [#239311](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=239311)).
1528
1529- Fixed build failures on Gentoo with gcc-8.2.0.
1530
1531- Several C functions in `liblepton`, various Lepton tools,
1532  contributed code (`olib`, `sarlacc_schem`, `convert_sym`,
1533  `gmk_sym`) as well as PO-files have been fixed to avoid
1534  compilation warnings and errors.  Now `lepton-eda` compiles
1535  without warnings with gcc/g++ on several platforms.  Several
1536  warnings reported by clang++/llvm have been fixed as well.
1537
1538- The like changes as above have been done in the Scheme part of
1539  code to prevent various compilation and deprecation warnings in
1540  several modules and tools when compiled with guile-2.0 or
1541  guile-2.2.
1542
1543- LaTeX files are no longer generated by `make doxygen` since it
1544  was reported that several Ubuntu versions do not do TRT when
1545  building LaTeX documentation.
1546
1547- **Doxygen** subsystem has been cleaned up to get rid of unused
1548  files since the tools rewritten in Scheme are not covered by its
1549  functionality any more.
1550
1551- Fixed some portability issues in documentation building.
1552
1553- Building of documentation no longer depends on the `fig2dev`
1554  program.  The dependency has been eliminated.
1555
1556- **Gettext** translation subsystem has been changed for most of
1557  the tools in that to avoid unintentional and unwanted updates of
1558  their translation *PO* files when the tools are built from
1559  sources.
1560
1561- Now *Lepton EDA Scheme Reference Manual* in the `HTML` format is
1562  built and installed with other files on `make && make install`.
1563  A CSS file has been added to prettify the generated HTML pages.
1564
1565- Some empty application-specific directories that previously
1566  could not be removed after uninstalling all files by `make
1567  uninstall` are now correctly deleted.
1568
1569### Changes in `liblepton`:
1570
1571- `liblepton` configuration C and Scheme API has been extended
1572  with functions for removing configuration keys and groups.
1573
1574- A new Scheme module, `(lepton file-system)`, has been added. It
1575  exports functions that previously were global:
1576  `regular-file?()`, `directory?()`, and `file-readable?()`.  The
1577  users may need to fix their scripts in which those functions
1578  were used by adding corresponding `(use-modules ...)` line..
1579
1580- A new Scheme module, `(lepton rc)`, has been added.  It exports
1581  functions and variables that previously were global: build-path,
1582  `geda-data-path()`, `geda-rc-path()`, `path-sep()`,
1583  `load-scheme-dir()`, and `load-rc-from-sys-config-dirs()`.  The
1584  users may need to fix their scripts in which those functions and
1585  variables were used by adding corresponding `(use-modules ...)`
1586  line.
1587
1588- Fixed `'config-keys` unit test which previously did not work
1589  correctly on some Ubuntu versions.
1590
1591### Changes in `libleptonrenderer`:
1592- Default font name has been changed from `Arial` to `Sans`.
1593
1594- Changes in path rendering:
1595
1596  - Previously, the library was not able to render zero line width
1597    paths properly since the zero value for the line width field
1598    in the path definition was interpreted as a request for
1599    the default line width.  Therefore the path objects were always
1600    enlarged by some amount in size. Now, when line width of a
1601    path is set to zero, the stroke is not rendered, thus allowing
1602    drawing of filled figures without increasing their size by a
1603    half of the line width, so the object sizes strongly
1604    correspond to what the user wanted.  No line is drawn when
1605    exported with `lepton-cli export` command. In the
1606    `lepton-schematic` GUI, 1 screen pixel line is used for
1607    rendering zero line width path objects to provide visual
1608    feedback to the user.
1609
1610  - Now, path objects can be rendered with different line cap
1611    styles when the line width is non-zero.  Previously, the
1612    default `square` style was always used.
1613
1614### Scheme API changes
1615- Three legacy rc procedures, `attribute-promotion`,
1616  `promote-invisible`, and `keep-invisible`, have been adjusted to
1617  return their boolean values if used with no arguments, instead
1618  of just `#t`. This allows using the results in Scheme
1619  plugins. The procedure `bitmap-directory` now returns its string
1620  value if used with no arguments.  If no value has been
1621  previously set, it returns `#f`.
1622
1623- A new hook, `open-page-hook`, has been added to the `(gschem
1624  hook)` module.  It allows to evaluate Scheme code when an
1625  existing schematic page is loaded.
1626
1627- New Scheme API functions for working with object selectable
1628  status have been added to the `(geda object)` module:
1629  `object-selectable?` and `set-object-selectable!`.  Together
1630  with page hooks they can allow to save locking status of
1631  primitive objects without changing the current file format.
1632
1633- The function `arc-end-angle` has been fixed so it now correctly
1634  returns the end angle of an arc.  Since its creation, it gave
1635  improper results because it was a sibling of a C function
1636  returning the sweep angle of an arc. A new function,
1637  `arc-sweep-angle`, has been added to maintain that
1638  functionality.
1639
1640### Changes in `lepton-netlist`:
1641
1642- A few improvements have been made in option processing:
1643
1644  - Getopt-long functions are no more directly used inside
1645    netlister modules, so the modules can now be loaded in other
1646    programs having other options. This affects unit testing and
1647    `lepton-schematic` GUI, as in those cases another set of
1648    options may be used.
1649
1650  - Processing of some options yielding lists when several of such
1651    options are used, no more results in reversed lists.
1652
1653  - Processing of the `-c` option has been fixed so there is now
1654    no errors when it used more than once.
1655
1656- The option *-w* introduced in Lepton EDA 1.9.6 has been
1657  removed. It was used to suppress warnings about missing
1658  configuration files.  This is no longer needed, since the
1659  function `config-load!()` has been fixed to not complain if
1660  those files are absent.
1661
1662- A few improvements have been made in the SRFI-64 unit-test suite:
1663
1664  - There is no more limit for backtrace length if an error
1665    occurs, the unit-test script uses default stack size which
1666    makes debugging a bit more convenient.
1667
1668  - Backtrace output is now formatted properly without newline
1669    mangling.
1670
1671  - Directories containing modules `lepton-netlist` depends on
1672    have been added to the unit-test script load path. Modules
1673    depending on `liblepton` and `symcheck` can now be used with
1674    the script.
1675
1676- A new record, `<schematic-component>`, has been added. It is now
1677  the basic record for using in the backends that work with
1678  components such as **spice** ones.
1679
1680- `<schematic>` record now contains a new field, `packages`,
1681  containing the list of schematic *packages*, where any element
1682  of the list is a `<package>` record.  The `<package>` records
1683  now contain sets of components with same refdes. The field
1684  *packages* is intended for use in backends working with
1685  multi-slot packages, e.g. **PCB**.
1686
1687- The `schematic-netlist` field of the `<schematic>` record has
1688  been renamed to `schematic-components` to more accurately
1689  reflect destination of the field.
1690
1691- Common `<package>` structures for `<schematic-component>`'s with
1692  default "refdes" attribute value are no longer
1693  created. Component's "refdes" value is considered to be default
1694  if the component has no attached "refdes", or its attached
1695  "refdes" is the same as the inherited one and has the suffix
1696  "?".
1697
1698- A new module, `(netlist schematic-connection)`, has been added.
1699  The module has to provide records and functions for working with
1700  schematic connections, that is, directly or indirectly connected
1701  groups of nets.
1702
1703- The `composite` field in the `<schematic-component>` record,
1704  inherited from the `<package>` structure, has been renamed to
1705  `sources`.  The field can be used to get source file names.
1706
1707- The obsolete procedure `get-uref()` has been replaced with a
1708  local procedure and its using is discouraged.
1709
1710- A new module, `(netlist schematic toplevel)`, has been added. It
1711  contains accessors for `<toplevel-schematic>` record which is
1712  now obtained as a set of schematic files given on
1713  **lepton-netlist** command line.  The `toplevel-schematic`
1714  variable has been replaced with same named procedure.
1715
1716- Arguments for `make-toplevel-schematic()` are now filenames
1717  instead of pages.  This will allow reusing this function to
1718  encapsulate subschematics in future.
1719
1720- A new module, `(netlist deprecated)`, has been added to isolate
1721  legacy code that is a subject for deprecation in the next stable
1722  release.
1723
1724- A new function, `set-netlist-option!`, has been added to the
1725  `(netlist option)` module.  It lets the users set arbitrary
1726  default netlister option values when the netlister modules are
1727  used by other tools, e.g., when they're loaded while working in
1728  `lepton-schematic` GUI.
1729
1730- A new module `(netlist page)` has been added.  The new module
1731  now contains an only procedure, `filename->page()`, which opens
1732  a schematic page by filename.  Depending on the form of its
1733  call, it can return either an already opened page for a given
1734  filename, or a new page, if the user so desires.
1735
1736- Several issues related to hierarchical names have been fixed:
1737
1738  - Reverse order setting for refdes attribute no longer affects
1739    netnames.
1740
1741  - Now netnames are formed using true reversed hierarchical name,
1742    before they were formed from a string representing
1743    hierarchical refdes and local netnames. Since the hierarchical
1744    refdes string might be not reversed depending of the reverse
1745    order setting for refdes, the resulting strings did not
1746    reflect hierarchy correctly.
1747
1748  - For the same reason, the separator for the "net=" and
1749    "netname=" attributes did not affected resulting net names,
1750    which has been fixed as well.
1751
1752  - Removing of refdes mangling was previously possible only if
1753    the refdes separator was "/".  This has been fixed to support
1754    other separators.
1755
1756- The following fixes have been made in the VAMS example:
1757  - Deprecated gnetlistrc settings have been replaced with new
1758    configuration options.
1759  - Wrong netlister name has been fixed.
1760  - generate_netlist.scm has been moved to the example directory.
1761
1762- The `vams` backend code has been fixed as follows:
1763
1764  - The code does no longer emit Scheme return values of
1765    procedures, which previously mangled the output.
1766
1767  - The output of generic and port definitions is now going into
1768    appropriate place.
1769
1770  - A list of attributes that cannot form generics does no longer
1771    appear in the output.  Two internal (or abstract) attributes,
1772    `slot=` and `net=`, are no longer used in forming VHDL generic
1773    maps, since they are intended for internal use by netlister
1774    itself.
1775
1776- The `allegro` backend has been refactored so obsolete procedures
1777  are no longer used in it.
1778
1779- Two obsolete scripts written in **sh** and **awk**,
1780  `annotate.sh` and `unannotate.sh`, have been removed from the
1781  distribution.
1782
1783- Three **sh** scripts, `bompp.sh`, `bom_xref.sh`, and
1784  `sch2eaglepos.sh`, have been moved to the *contrib/* directory.
1785
1786- The directory *netlist/utils/* and an only pretty much obsolete
1787  utility, `mk_verilog_syms`, contained in it, have been removed
1788  from the distribution. The script was used to initially create
1789  *verilog* symbols, and output symbols in obsolete format with
1790  limited set of pin attributes. By now, initially created verilog
1791  symbols have been modified in various ways, including manual
1792  intervention and generating the symbols with some new version of
1793  the program that did not however go to the repository, so the
1794  removing is safe.
1795
1796- Netlister backends and associated files have been moved to a new
1797  subdirectory `share/lepton-eda/scheme/backend`.
1798
1799- An arbitrary backend file can be loaded by specifying its path
1800  via the new `-f` command line switch to `lepton-netlist`.
1801  The file should be named like `gnet-NAME.scm`, where `NAME` is the
1802  backend's name. It's useful for testing new and 3rd party
1803  backends, as well as running backends from different
1804  installation paths.
1805
1806### Changes in `lepton-schematic`:
1807
1808- The command line option *-p* has been removed. It was used to
1809  automatically place the main window with some default widget
1810  sizes.
1811
1812- Several configuration settings have been changed to ensure
1813  reasonable default values:
1814  - The **rubber band** mode and **magnetic net** mode status bar
1815    indicators are now shown by default
1816    (`schematic.status-bar::show-rubber-band=true`,
1817    `schematic.status-bar::show-magnetic-net=true`).
1818  - The tabbed GUI is enabled (`schematic.gui::use-tabs=true`).
1819  - Monospace font is used in the log window
1820    (`schematic.log-window::font=Monospace 11`).
1821  - Monospace font is used in the macro widget entry
1822    (`schematic.macro-widget::font=Monospace 11`).
1823
1824- The attribute attachment code has been rewritten in Scheme,
1825  changed and fixed in several ways:
1826
1827  - Now attributes can be attached to any non-text objects.
1828
1829  - Only visible attributes can be now attached.
1830
1831  - If attributes are already attached or no attribute is
1832    selected, no action is undertaken.
1833
1834  - Information about successful attachment is now printed to the
1835    log.
1836
1837  - Successfully attached attributes and the object they are
1838    attached to are deselected after the attachment operation.
1839
1840- The attribute detachment behaviour has been changed.  Before,
1841  attributes of selected objects (visible and invisible, selected
1842  or not) were all unconditionally stripped.  The detachment code
1843  has been rewritten in Scheme, changed and fixed in several ways:
1844
1845  - Now only selected visible attributes are detached from their
1846    respective parent objects.
1847
1848  - There is no need to select parent objects in order to detach
1849    their attributes any more.
1850
1851  - The info about successfully detached attributes is now output to
1852    the log.
1853
1854  - If there is no selection, the selected attributes are not
1855    attached to any object, or selection does not include any
1856    attributes, nothing is undertaken.
1857
1858  - Just detached attributes get unselected and their color is
1859    changed to the color of detached attributes.
1860
1861- Several improvements/fixes with regard to locking/unlocking of
1862  components and their attributes have been introduced:
1863
1864  - Previously, when a component was locked, its attributes were
1865    also locked, but they changed the locking status after saving
1866    and reopening of schematic.  Now, they become locked along
1867    with the component they're attached to.
1868
1869  - Previously, toggling of locking status of a component and its
1870    attributes required selecting them all to do it properly.
1871    Otherwise, the locking status of not selected attributes would
1872    not change.  Now, it is sufficient to select only the
1873    component to lock or unlock it together with the attributes,
1874    without having to additionally select them.
1875
1876- The action 'File → Save All' and processing of "untitled"
1877  schematics have been improved:
1878
1879  - It used to be that on saving all files, all opened pages were
1880    silently saved, even if there were new "untitled" pages among
1881    them, that is, the pages newly created under the default file
1882    name and not yet saved to disk.  Now such files are skipped
1883    from saving.
1884
1885  - When constructing file name for a new "untitled" page, the
1886    names of already opened files and existing files in the current
1887    directory are taken into account. These names are not reused
1888    to prevent possible consequent data loss.  The skipped names
1889    are printed to the log.
1890
1891  - A message indicating the result of the "save all" operation is
1892    now shown in the status bar.
1893
1894  - If tabbed GUI is enabled in configuration, the header of each
1895    tab widget correctly updates to reflect the status of its
1896    page, if it is saved or not.
1897
1898  - "Save As" dialog box is now opened for new "untitled" pages on
1899    the "save all" operation, prompting the user to save them.
1900
1901- In the 'Edit Attributes' dialog, it is now possible to copy names
1902  and values of inherited attributes to clipboard. The feature was
1903  first requested on *launchpad* in
1904  [#1405314](https://bugs.launchpad.net/geda/+bug/1405314).
1905
1906- Distinct parts of the `system-gschemrc` configuration file are
1907  moved to separate files under the `conf/schematic/` subdirectory
1908  to simplify dealing with certain aspects of `lepton-schematic`
1909  behaviour and searching for appropriate settings. The new files
1910  are loaded from `system-gschemrc`:
1911  - `attribs.scm`
1912  - `deprecated.scm`
1913  - `keys.scm`
1914  - `menu.scm`
1915  - `options.scm`
1916  - `stroke.scm`
1917
1918- The following Scheme functions are now deprecated and do nothing:
1919  - `gschem-image`
1920  - `gschem-pdf`
1921  - `gschem-use-rc-values`
1922
1923- Several `gschemrc` settings has been changed as follows:
1924  - `add-attribute-offset` is now deprecated and does nothing.
1925  - `image-color` is now deprecated and does nothing.
1926  - `image-size` is now deprecated and does nothing.
1927  - `logging-destination` is now deprecated and does nothing.
1928  - `log-window-type` is now deprecated and does nothing.
1929  - `raise-dialog-boxes-on-exp` is now deprecated and does nothing.
1930  - `window-size` is now deprecated and does nothing.
1931  - `warp-cursor` is now "disabled" by default.
1932  - `fast-mousepan` is now "disabled" by default.
1933  - `log-window` is now "later" by default.
1934  - `undo-levels` is now "20" by default.
1935  - `undo-panzoom` is now "disabled" by default.
1936
1937- The `sys-doc-dir()` function code in the module `(gschem
1938  gschemdoc)` module responsible for searching for system
1939  documentation directories has been known to fail in some
1940  circumstances when it tried to guess where the documentation
1941  files are installed. The guess-work has been eliminated by using
1942  fixed compile-time variables in the code.
1943
1944- The geometry (size and position) of `lepton-schematic`'s main
1945  window can now be stored in the **cache** configuration context,
1946  in the `schematic.window-geometry` group. The geometry is saved
1947  on exit and restored on startup if the (new)
1948  `[schematic.gui]::restore-window-geometry` configuration key is
1949  set to `true` (which is so by default).
1950
1951- The **macro widget** has been improved in several ways:
1952
1953  - A new configuration group, `schematic.macro-widget`, has been
1954    added for setting up the properties of the widget.
1955
1956  - The history of Scheme expressions executed via the `:` prompt
1957    is now saved in the configuration file in the *cache*
1958    configuration context (usually
1959    `$XDG_CACHE_HOME/lepton-eda/gui.conf`). The commands are
1960    stored in the `history` key and can be accessed by choosing
1961    appropriate items from drop-down list in the macro widget. The
1962    history length is set in the `history-length` configuration
1963    key in the `schematic.macro-widget` group in the *user*
1964    configuration context. The default value is 10.
1965
1966  - The macro widget now supports auto-completion of text.
1967
1968  - A new configuration key, `font`, in the
1969    `schematic.macro-widget` group in the *user* configuration
1970    context can now be used for setting up the font of the widget.
1971
1972  - As a side effect of refactoring of the widget, the program no
1973    longer crashes on evaluating of the command `(file-quit)` in
1974    the prompt.
1975
1976- New accelerator keys have been added to facilitate keyboard
1977  navigation in the following dialogs:
1978  - `Single Attribute Editor`
1979  - `Edit Attributes`
1980  - `Select Component`
1981  - `Add Text`
1982  - `Edit Text`
1983  - `Object Properties`
1984  - `Options`
1985  - `Arc Params`
1986
1987- The log window can now be cleared by choosing "Clear Log Window"
1988  menu item in the context menu.  The user can cancel the action
1989  in the confirmation dialog.
1990
1991- Long lines in the log window can now be wrapped by clicking the
1992  "Wrap Long Lines" menu item in the log window's context menu.
1993
1994- Schematic page filename and more verbose information is now
1995  displayed in the page revert dialog.
1996
1997- If you select 'Print to File' option in the print dialog, the
1998  output PDF file name is now derived from the name of the current
1999  page instead of previous default name "output.pdf".
2000
2001- File filters in the dialog boxes 'Open...' and 'Save As...' now
2002  keep their last chosen values while the program is running.
2003  Previously, the filters were always set to choosing schematic
2004  files when the user opened the dialogs.
2005
2006- Wrong behaviour of the program when the value of **draw-grips**
2007  is set to "disabled" in `gschemrc` has been fixed, so now this
2008  setting prohibits drawing grips of selected objects still
2009  allowing the user to resize them.
2010
2011- A new menu allowing exporting of netlists has been added to the
2012  program.  As of now, the only item in the menu allows exporting
2013  of `allegro` netlists. Messages about processing are sent to log
2014  to provide the user with some feedback information in the log
2015  window.
2016
2017- Fixed segmentation faults in the `always-promote-attributes` rc
2018  function (called from the `gafrc` configuration file) when used
2019  with improper arguments.
2020
2021- Avoided GTK warnings on output of some message strings to the
2022  status bar containing characters which are treated specially by
2023  GTK, such as '<' and '>'.
2024
2025- Page "changed" indicator is now shown in the tab headers as
2026  well: the file name shown is output in bolder font and an
2027  asterisk is added to emphasize that the file has been changed.
2028
2029- Fixed font preview in the font selection dialog. Previously, if
2030  a custom font name was specified in the configuration key `font`
2031  in the `schematic.gui` configuration group, the text became
2032  invisible in the preview widget of the dialog, because the
2033  "Size" field was always initially set to zero.  This has been
2034  fixed by setting the initial font size to non-zero value.
2035
2036- Fixed page "changed" status indication.  Previously, after
2037  successful *Edit* → *Embed* and *Edit* → *Unembed* operations
2038  the "changed" status of the page would not reflect in the page
2039  manager and in the window's title.  Now, both are correctly
2040  updated so that the status is visible to the user.
2041
2042- Page manager visual appearance has been improved in several ways:
2043
2044  - When working on hierarchical schematics, full schematic paths
2045    used to clutter the view most of the time. Now they can be
2046    shown at any time or hidden away by checking the "Show full
2047    paths" checkbox. By default, they are hidden.  The state of
2048    the "Show full paths" checkbox is stored in the
2049    `show-full-paths` key of the `schematic.page-manager` group in
2050    the **cache** configuration context.
2051
2052  - Minimal "Filename" column width has been reduced.
2053
2054  - Scrollbars are now shown only when needed.
2055
2056  - Superfluous "Right click on the filename for more options..."
2057    label has been removed.
2058
2059  - The "Update" button has been removed from the page manager
2060    dialog, and a similar item has been added to the context menu.
2061
2062- Fixed a broken output of translated strings to the log when the
2063  program is compiled using guile-2.2.  It is a [known
2064  issue](https://lists.gnu.org/archive/html/bug-guile/2017-01/msg00020.htm)
2065  in guile-2.2.  The function `scm_puts()` broke translated
2066  Unicode strings and output them as sets of bytes.  Their further
2067  transformation by gtk functions resulted in unreadable text in
2068  the log window.
2069
2070- Fixed segfaults triggered on some systems by the sequence
2071  <kbd>Control</kbd>+<kbd>x</kbd> <kbd>Control</kbd>+<kbd>v</kbd>
2072  when a component was selected.
2073
2074- Fixed errors triggered by the function `file-quit` on startup,
2075  for example, using the following command: `lepton-schematic -c
2076  '(file-quit)'`.
2077
2078- Fixed a bug of searching for `gschem-gtkrc` in wrong system
2079  config directories.
2080
2081- The file `gschem.scm`, that defined some previously global
2082  Scheme functions, has been transformed into two modules —
2083  `(schematic gui keymap)` and `(schematic gui strokes)`.  While
2084  this simplifies Lepton code a little and eliminates a
2085  superfluous step of loading the file with auxiliary functions,
2086  the functions are no more global, so the users may have to fix
2087  up their extensions, if they want to use those functions, by
2088  making sure the necessary modules are loaded within them.
2089
2090- Exceptions in the (gschem gschemdoc) module are now catched and
2091  reported to the user in a message box.
2092
2093- The menu item *Help* → *Find Component Documentation* is now
2094  sensitive only if a component is selected, providing the user
2095  with a useful feedback.
2096
2097- The action `&repeat-last-action` (the /repeat/ key *.*) has been
2098  improved, so it now does as following:
2099
2100  - It now displays a log message when there is no last action to
2101    repeat rather than warning about an invalid action.
2102
2103  - If an invalid action is requested, instead of using the Scheme
2104    function `error()` to report the failure, it just prints a
2105    warning to the log.
2106
2107- Deprecated export scripts `image.scm`, `print.scm` and the
2108  `--output` command line option have been removed. Schematics can
2109  be exported by using `lepton-cli export` or via the 'File →
2110  Write Image...' dialog box.
2111
2112- Current schematic's full file path can be shown in the main window's
2113  title if the `title-show-path` configuration key (boolean) in the
2114  `schematic.gui` group is set to `true`.
2115
2116- Close confirmation dialog has been improved:
2117
2118  - It can be resized.
2119  - "Show full paths" checkbox has been added.
2120
2121- The `Write Image...` dialog box has been improved as follows:
2122
2123  - Image color mode can now be selected (greyscale or color).
2124  - 1024x768 has been added to the list of image sizes.
2125  - Selected directory, image size, image type and color mode
2126    are saved and restored when this dialog is opened next time.
2127
2128- New names are now used for temporary files created by undo
2129  subsystem in `$TMP`: `lepton-schematic.save*` instead of
2130  `gschem.save*`.
2131
2132### Changes in `lepton-attrib`:
2133
2134- The program no longer loads `gattribrc` files since for many
2135  years they provided no useful settings for the user.  Previously
2136  available Scheme functions `quit()`, `exit()`, and
2137  `gattrib-version()` have been removed as well.
2138
2139- Separate menu description *XML* file has been removed. Now the
2140  menu structure is defined in the source code only.
2141
2142- The size and position of the main window is now saved in the
2143  **cache** configuration context, in the group
2144  `attrib.window-geometry`, and restored on launching of the
2145  program.
2146
2147### Changes in `lepton-symcheck`:
2148
2149- The program no longer requires specifying any file name when
2150  interactive mode is requested, which may be convenient, for
2151  example, for debugging its functions.
2152
2153- A simple error is output instead of Scheme backtrace when
2154  neither interactive mode nor input files are specified on
2155  command line.
2156
2157### Changes in `lepton-cli`:
2158- Default font name for the `export` command has been changed from
2159  `Arial` to `Sans` (`export::font=Sans`).
2160
2161### Changes in `lepton-schlas`:
2162- The program no longer loads `system-gschlasrc` since for many
2163  years it provided no useful settings for the user.  Previously
2164  available Scheme functions `quit()`, `exit()`, and
2165  `gschlas-version()` have been removed as well.
2166
2167### Changes in `lepton-schdiff`:
2168- Default font name has been changed from `Arial` to `Sans`.
2169
2170### Changes in `gmk_sym`:
2171
2172- Non-working `-d` (debug) option has been removed.
2173
2174Notable changes in Lepton EDA 1.9.7 (20181211)
2175----------------------------------------------
2176
2177### Changes in `lepton-schematic`:
2178
2179- A new action, `edit-object-properties`, has been added. It is a
2180  replacement for four legacy actions which opened the same
2181  dialog: `edit-color`, `edit-linetype`, `edit-filltype`,
2182  `edit-pin-type`. The action is now bound to the shortcut
2183  <kbd>E</kbd>-<kbd>O</kbd>.
2184
2185- Fixed icon name for "Down Symbol" entry in pop-up menu.
2186
2187- Improved diagnostics of input file errors:
2188
2189  - If `--verbose` (`-v`) command line option is passed to
2190    `lepton-schematic`, it prints input files line by line as they
2191    are parsed in the terminal, which facilitates debugging of
2192    broken schematics.
2193
2194  - "Failed to load file" dialog error message has been
2195    improved. It now reports line number in the schematic file
2196    where parsing was stopped due to an error.
2197
2198- Several changes in the `lepton-schematic` menu make it more
2199  organized and easier to navigate through:
2200  - A new shortcut, <kbd>O</kbd>-<kbd>F</kbd>, for 'Options →
2201    Font', has been added.
2202  - A new shortcut, <kbd>T</kbd>-<kbd>I</kbd>, for 'Attributes →
2203    Show/Hide Hidden Text', has been added while retaining the
2204    legacy one, <kbd>E</kbd>-<kbd>N</kbd>.
2205  - Shortcut for 'Help → Find Component Documentation' has been
2206    changed to <kbd>H</kbd>-<kbd>O</kbd>.
2207  - Shortcut for 'Options → Options' has been changed to
2208    <kbd>O</kbd>-<kbd>O</kbd>.
2209  - Shortcut for 'Attributes → Find Text' has been changed to
2210    <kbd>T</kbd>-<kbd>F</kbd>.
2211  - Obsolete 'Edit Pin Type' entry in pop-up menu has been
2212    replaced with 'Object Properties'.
2213
2214- Some issues with using of 'Help' menus have been fixed:
2215  - Fixed doc searching bug in `lepton-schematic`'s module
2216    `gschemdoc` which failed due to wrong guessing on the
2217    installed documentation paths.
2218  - Fixed blocking of `lepton-schematic` GUI on using 'Help' menu
2219    entries on systems where documentation viewer may not return
2220    control until the web browser is closed.
2221
2222### Changes in `lepton-netlist`:
2223
2224- A new test schematic for the `verilog` backend has been
2225  added. It allows checking changes in verilog module
2226  declarations.
2227
2228- Log initialisation has been moved from the `(netlist)` module to
2229  the `lepton-netlist` executable file to prevent repetition
2230  of the initialisation on every loading of the module and using
2231  the wrong log domain when the module is loaded, e.g., in
2232  `lepton-schematic` GUI.
2233
2234- Output of `lepton-netlist` version has been unified and placed
2235  into one procedure, `lepton-netlist-version`.  Version is now
2236  output once per run, and the procedure can be used interactively
2237  in `lepton-netlist` REPL.
2238
2239- `lepton-netlist` interactive mode can now be used without
2240  specifying any file name on command line; the user can now load,
2241  traverse, and introspect arbitrary schematics data in its REPL.
2242
2243- Some backward compatibility variables have been provided to
2244  ensure compatibility with legacy geda backends.
2245
2246- `schematic-packages` and `schematic-non-unique-packages` fields
2247  have been removed from the `<schematic>` record since they are
2248  derivatives from its other structures. Two substitution
2249  procedures retrieving those data, `schematic-package-names` and
2250  `schematic-non-unique-package-names`, have been provided to
2251  provide the same functionality.
2252
2253- New procedure `netlist-error` is now used instead of `error` in
2254  many backends for reporting errors. This simplifies error output
2255  by avoiding improper output of the program execution stack where
2256  it is not necessary.
2257
2258- The program now catches errors in loaded code (specified by
2259  options `-g`, `-l`, `-m`, `-c`) and exits with appropriate error
2260  message.
2261
2262
2263### Changes in `liblepton`:
2264
2265- The library has now facilities to load schematics in a verbose
2266  manner, which is now used in `lepton-schematic` (see above) for
2267  debugging.
2268
2269
2270Notable changes in Lepton EDA 1.9.6 (20181101)
2271----------------------------------------------
2272### Breaking changes:
2273- All `(gnetlist module-name)` Scheme modules have been renamed to
2274 `(netlist module-name)`.
2275
2276### Changes when building from source:
2277- More portable gcc flags (namely, `AX_GCC_FLAGS`) are used now.
2278  `-std=c99` substitutes for `-std=gnu99`, and
2279  `-Werror=uninitialized` is now used instead of
2280  `-Werror=maybe-uninitialized`.
2281
2282
2283### Changes in `lepton-schematic`:
2284
2285- A new configuration key `text-sizes` in `schematic.gui` group
2286  has been added. It can be set to a semicolon-separated list of
2287  text size values. Those values will appear in *Text Entry...*
2288  ('Add → Text)' and *Text* ('Edit → Text') dialogs instead of
2289  default built-in values.
2290
2291- The middle mouse button can now be used to display the popup
2292  menu. Set `(middle-button "popup")` in `gschemrc` configuration
2293  file for this to work.
2294
2295- The maximum number of recent files to show in the `File → Open
2296  Recent` menu can now be configured using `max-recent-files` key
2297  in the `schematic.gui` group.
2298
2299- Processing of `-q` (`--quiet`) command line option has been fixed.
2300
2301### Changes in `lepton-netlist`:
2302
2303- `lepton-netlist --list-backends` standard output now contains just
2304  the list of backend names, making it more script-friendly.
2305
2306- A bug in the function `get-all-connections`, which led to wrong
2307  netlists, has been fixed. The function now ignores pins of
2308  *graphical* components if they are connected to nets.
2309
2310- Filtering of "no-connect" packages and nets has been added:
2311  - A new `symbol=nc` attribute has been added to the list of
2312  processed attributes.  Please see the
2313  [Attributes](https://github.com/lepton-eda/lepton-eda/wiki/Attributes)
2314  page in the lepton wiki for more information on how it works and
2315  about backward compatibility.
2316  - A new function, `package-nc?` has been added to the `(netlist
2317  package)` module to filter the "no-connect" packages.
2318  - The `<schematic>` record in the `(netlist schematic)` module
2319  has been changed to contain the field `nc-nets` providing the
2320  names of nets connected to the "no-connect" symbols.
2321  - Appropriate functions of the `drc2` backend have been modified
2322  accordingly to support the new attribute.
2323  - The "no-connect" symbols in the distribution (`nc-*.sym`) have
2324  been updated to reflect the above change.
2325  - Some netlister test schematics have been fixed to check for
2326  the new and legacy "no-connect" symbols.
2327
2328- Output of the `geda` backend has been changed. Now it outputs
2329  additional information on graphical symbols and "no-connect"
2330  symbols.
2331
2332- Error output of the `bom2` backend has been fixed.
2333
2334- Log file names are now prefixed with `netlist` instead of
2335  `gnetlist`.
2336
2337- Reduced output to log files by removing disclaimer.
2338
2339- Fixed netlister name in the output of many backends.
2340
2341- A new command line option, *-w*, has been added to prevent
2342  "annoying" warnings about missing configuration files.
2343
2344- A new module, `(netlist error)`, and a new function in it,
2345  `netlist-error()`, have been added. The function is recommended
2346  for using in code of backends instead of `error()`, since the
2347  latter outputs Scheme execution stacks awful for mere users and
2348  absolutely unnecessary in cases where there are no programming
2349  error.
2350
2351- The program now exits with exit code *1* when neither backend
2352  nor interactive mode are given.
2353
2354### Changes in `lepton-schdiff`:
2355
2356- A non-portable invocation of `mktemp` has been fixed.
2357
2358- Temporary file names are now prefixed with strings
2359  "lepton-schdiff-old", "lepton-schdiff-new", and
2360  "lepton-schdiff-diff" to facilitate debugging.
2361
2362- `lepton-cli export` is now invoked instead of deprecated Scheme
2363  scripts.
2364
2365- A new command line option, *-d [VIEWER]*, has been added to
2366  specify the image viewing program.  By default, `display` from
2367  the **ImageMagick** package is used.
2368
2369- The script now uses the schematic font name set in the
2370  `schematic.gui::font` configuration key to output images. By
2371  default, if that key is not set, *Arial* is used.
2372
2373
2374Notable changes in Lepton EDA 1.9.5 (20180820)
2375----------------------------------------------
2376
2377### Changes when building from source:
2378- The version of the `libleptonrenderer` library, mistakenly
2379  broken in the previous release, has been fixed.
2380
2381- Fixed build on systems with several versions of `guile` package
2382  installed. On such systems, the user can specify the right
2383  program binary on the `configure` stage, e.g., `./configure
2384  GUILE=/usr/bin/guile-2.0`.
2385
2386### Changes in `lepton-schematic`:
2387
2388- Log window scrolling has been fixed so that the last line of the
2389  log is shown correctly.
2390
2391### Changes in `lepton-netlist`:
2392
2393- A new backend, *tEDAx*, aimed to support for the `pcb-rnd`
2394  program, has been added.
2395
2396- The patch preventing using of some `bash`-specific constructs
2397  has been applied.
2398
2399- Duplicate backend name output by the `--list-backends` command
2400  line option has been avoided.
2401
2402
2403Notable changes in Lepton EDA 1.9.4 (20180812)
2404----------------------------------------------
2405
2406### Breaking changes:
2407
2408- `gaf` has been renamed to `lepton-cli`, `gschem` has been
2409  renamed to `lepton-schematic`, `gnetlist` has been renamed to
2410  `lepton-netlist`, `gsch2pcb` has been renamed to
2411  `lepton-sch2pcb`, `gsymcheck` has been renamed to
2412  `lepton-symcheck`, `grenum` has been renamed to `lepton-renum`,
2413  `refdes-renum` has been renamed to `lepton-refdes_renum`,
2414  `tragesym` has been renamed to `lepton-tragesym`,
2415  `pcb_backannotate` has been renamed to
2416  `lepton-pcb_backannotate`, `garchive` has been renamed to
2417  `lepton-archive`, `gsymfix` has been renamed to `lepton-symfix`,
2418  `schdiff` has been renamed to `lepton-schdiff`, `gschlas` has
2419  been renamed to `lepton-schlas`, `gxyrs` has been renamed to
2420  `lepton-xyrs`, `gattrib` has been renamed to `lepton-attrib`.
2421
2422- By default, backward compatibility symlinks are not created for
2423  major renamed tools, namely, `gaf`, `gattrib`, `gnetlist`,
2424  `gsch2pcb`, `gschem`, and `gsymcheck`, though the user can
2425  change that.  A new configure option,
2426  `--enable-compat-symlinks`, can be used to enable their
2427  creation.
2428
2429- The users have now use `info lepton-scheme` to open texinfo
2430  manual on Lepton EDA Scheme API instead of `info geda-scheme`.
2431
2432### General changes:
2433
2434- Compatibility with various non-Linux systems has been improved
2435  by avoiding of hardcoding paths for such interpreters as Perl,
2436  Python, or bash.
2437
2438- `lepton-eda` can now be compiled in C++ mode basically by using
2439  `./configure CC=g++ && make CC=g++`.
2440
2441- The same readline history file ".lepton_history" residing in the
2442  user configuration directory is used for `lepton-schematic`,
2443  `lepton-netlist`, and `lepton-symcheck`.
2444
2445- A new section about 'Makefile' creation has been added to
2446  CONTRIBUTING.md to facilitate non-gnu-make builds.
2447
2448- Fixed `--disable-deprecated` configure option.
2449
2450- Fixed non-working Scheme API procedure `reset-source-library`.
2451
2452### Changes in `lepton-cli`:
2453
2454- Fixed Postscript output in landscape orientation.
2455
2456- Fixed `--layout` option processing for export.
2457
2458### Changes in `lepton-netlist`:
2459
2460- All `lepton-netlist` (previously known as `gnetlist`)
2461  functionality has been reimplemented in Scheme.
2462
2463- Fixed processing of the `graphical` attribute.
2464
2465- Fixed a regression in the `verilog` backend.
2466
2467- A new example and
2468  [a wiki page for it](https://github.com/lepton-eda/lepton-eda/wiki/Verilog-example)
2469  have been added for the `verilog` backend.
2470
2471### Changes in `lepton-schematic`:
2472
2473- view-find-text-state action has been added ('View → Find Text State'). It
2474helps when docking windows GUI is turned off (in that case all widgets
2475are not always visible).
2476
2477- "Freestyle" colors gain default values. Now there is no need to
2478share the color schemes if one use that colors in their schematics.
2479
2480- A new widget that allows the users to change the schematic font has
2481been added ('Options → Font...'). The user can click the "Apply" button
2482to preview the chosen font and then cick the "Save..." button to save
2483the settings either to the local or user configuraion file. It
2484changes `font` key in `schematic.gui` group mentioned below.
2485
2486- A new configuration key `font` in `schematic.gui` group has been
2487  added. The user can now choose the font for schematic text.
2488
2489- Program-specific settings are now stored in separate configuration
2490  file in `$XDG_CACHE_HOME` directory.
2491
2492- A new widget for changing color scheme has been added. The user
2493  can now open 'View → Color scheme editor...', choose the colors
2494  she wants, and save the resulting color scheme under appropriate
2495  file name.
2496
2497- File save dialog now displays proper names for new files.
2498
2499- File save dialog is no longer opened after 'File → Save' for
2500  existing files if they have already been saved under default
2501  name.
2502
2503- Some duplicated log messages and superfluous newlines are no
2504  longer displayed in the log window.
2505
2506- Orphaned pages visible only in Scheme are no longer created
2507  after 'Page → Revert'.
2508
2509- Tabbed GUI support has been added to `lepton-schematic`: each
2510  schematic page can be now displayed in its own tab.  By default,
2511  it is disabled and can be turned on by setting
2512  `schematic.gui::use-tabs` configuration key to `true`.  Two
2513  other configuration keys related to tabbed GUI are
2514  `schematic.tabs::show-close-button` and
2515  `schematic.tabs::show-up-button`. They determine whether to show
2516  "close" and "hierarchy up" buttons on each tab, respectively.
2517
2518- Non-working options "-r" and "--config-file" have been removed.
2519
2520- A new hook, `switch-action-mode-hook`, has been added, which can
2521  be used to yield user subroutines on mode switch. Please check
2522  `info lepton-scheme` for details.
2523
2524- 'Text Entry...' dialog now respects the `text-size` option
2525  value.
2526
2527- Freestyle colors have now appropriate names in GUI.
2528
2529- A new configuration key `modify-viewport` in `schematic.undo`
2530  group has been added. It allows to change panning and zooming on
2531  undo/redo operations if `undo-panzoom` is set to "disabled" in
2532  `gschemrc` configuration file.  The default value is "false".
2533
2534- Fixed naming of exported files in non-UTF-8 locales.
2535
2536- Warnings about missing standard menu items no longer clutter the
2537  log window when they are commented out in `system-gschemrc`.
2538
2539- A new widget to check symbols using `lepton-symcheck`
2540  functionality has been added.  Use 'Attributes → Find Specific
2541  Text...' or <kbd>T</kbd>, <kbd>Shift</kbd>+<kbd>F</kbd>, choose
2542  'Check Symbol:' on the combo-box at left, and press the button
2543  'Find'. A message dialog with info about wrong floating
2544  attributes will appear.  Closing it with the 'OK' button will
2545  lead to opening a window with info on objects having errors or
2546  warnings if such objects exist. If you select any of them, the
2547  canvas will be panned and zoomed to have it centered on the
2548  page.
2549
2550- Support for showing widgets as dialogs has been added. Now the
2551  users may decide, what type of GUI they prefer to use: dialog
2552  boxes (as it was before 1.9.2) or docking widgets.  The type of
2553  GUI is controlled by the `use-docks` configuration key in the
2554  `schematic.gui` group. By default it's `true`: use docking
2555  widgets. If it's `false` then the widgets will be shown as
2556  dialog boxes.
2557
2558- A new module, `(schematic undo)` has been added, which contains
2559  a new procedure, `undo-save-state`.  It saves current state onto
2560  the undo stack.  Now it's possible to support undo/redo
2561  operations while modifying a schematic by scripts written in
2562  Scheme.
2563
2564- Filtering support has been added to hotkeys dialog.  The user
2565  can quickly search by a desired keystroke or an action name in
2566  the `Filter:` entry.  When searching for hotkeys, the user has
2567  to enter space between letters.
2568
2569- A regression in the multiattrib dialog box, resulted in the
2570  wrong height of the value textview, has been fixed.
2571
2572- A new `font` configuration key in the `schematic.log-window`
2573  group is now used to select the font used in the log window.
2574
2575- Scrollbars in the log window are no longer shown if the text
2576  fits in the window.
2577
2578- Automatic scrolling is now used in text properties and object
2579  properties widgets.
2580
2581- Color selection combo box keeps updated in line with the current
2582  color scheme.
2583
2584- Several new statusbar settings can now be used to adjust the
2585  statusbar appearance. The user can change one of the settings in
2586  the `schematic.status-bar` configuration group in order to get
2587  her favorite view:
2588
2589  - Rubberband and magnetic net mode indicators can be now turned
2590    on by setting `show-rubber-band` and/or `show-magnetic-net`
2591    configuration keys to `true`, accordingly.
2592
2593  - Indication of mouse button assignment can be switched off by
2594    setting `show-mouse-buttons` configuration key to `false`.
2595
2596  - The user can now affect the font style used for the active
2597    action text with two new keys: `status-active-color` and
2598    `status-bold-font`.
2599
2600   Please see
2601   [the Configuration Settings HowTo](https://github.com/lepton-eda/lepton-eda/wiki/Configuration-Settings)
2602   for more information on the above settings.
2603
2604- All status bar elements have now tooltip descriptions.
2605
2606
2607### Changes in `lepton-symcheck`:
2608
2609- `lepton-symcheck` (previously known as `gsymcheck`)
2610  functionality has been fully reimplemented in Scheme.
2611
2612- Fixed wrong evaluation of amount of failed checks.
2613
2614- No Scheme rc files are parsed for the utility any more.  Useless
2615  rc procedures `gsymcheck-version`, `quit` and `exit` have been
2616  removed.
2617
2618- A new option, `--interactive`, has been added, which allows
2619  working with the tool functions in an interactive REPL.
2620
2621- Improvements and new checks in the utility:
2622
2623  - Improved error messages about various objects.
2624
2625  - Added checks for zero sized primitives.
2626
2627  - Added checks for forbidden objects inside symbols (nets,
2628    buses, components).
2629
2630  - Improved checks for duplicated floating attributes.
2631
2632  - An incorrect warning message about a trailing backslash in
2633    text objects has been fixed.
2634
2635  - Improved checks for the `pinseq` attribute multiplicity.
2636
2637  - Improved special checks for `device` and `graphical`
2638    attributes.
2639
2640  - Output messages about required floating attributes (`refdes`,
2641    `device`, and `footprint`) have been unified and have now
2642    severity `'warning` for all of them.
2643
2644  - Improved checks for symbol slotting: added checks for the
2645   `numslots` attribute and for duplicate pin numbers in the
2646   `slotdef` attributes.  Checks for duplicates in wrongly formed
2647   slots are avoided.
2648
2649  - Refactored checks for duplicates in `slotdef`, `net`, and
2650    `pinnumber`.
2651
2652  - Misleading warnings about matching pin number in `net` and
2653    `pinnumber` attributes are removed.
2654
2655### Changes in `lepton-sch2pcb`:
2656
2657- Environment variable `GNETLIST` is no longer used in
2658  `lepton-sch2pcb` to custom netlister executable name.  It has
2659  been replaced with `NETLISTER`.
2660
2661- New options, `--backend-cmd`, `--backend-net`, and
2662  `--backend-pcb` can be used to customize backend names. Default
2663  backend names are *pcbpins*, *PCB*, and *gsch2pcb*, respectively.
2664
2665### Changes in `gmk_sym`:
2666
2667- Using of both dot and clock in generated symbols for the
2668  `verilog` backend is now allowed. The user should use a new
2669  directive *BOTH* to make this work.
2670
2671### Changes when building from source:
2672
2673- Lepton now requires GTK+ 2.24.0, Glib 2.25.0, Gio 2.25.0,
2674  Gdk-pixbuf 2.21.0 or later versions for build.
2675
2676- Fixed option `--enable-contrib` of the *configure* script.
2677
2678
2679### Changes related to building under Cygwin:
2680
2681- An error in Cygwin port for Windows has been fixed.  Information
2682  on how to build `lepton-eda` under Cygwin can be found
2683  [in the lepton-eda wiki](https://github.com/lepton-eda/lepton-eda/wiki/Lepton-EDA-and-Cygwin).
2684
2685
2686Notable changes in Lepton EDA 1.9.3 (20170226)
2687----------------------------------------------
2688
2689### Breaking changes:
2690
2691- `libgeda` has been renamed to `liblepton` and `libgedacairo` has
2692  been renamed to `libleptonrenderer`.
2693
2694- Most legacy `gnetlist` API functions have been implemented in Scheme.  Some
2695  backends may need to be adjusted slightly to take advantage of the
2696  improved API.
2697
2698- Direct output file access in `gnetlist` backends is now discouraged.
2699  Backends should write netlist data to the current Scheme output
2700  port, unless the backend is generating several files.  The
2701  `output-filename` parameter to the main backend entry procedure is
2702  still meaningful; it reflects the output filename requested or is
2703  set to `#f` if `gnetlist` is generating the netlist to standard
2704  output.
2705
2706### General changes:
2707
2708- Lepton core tools will now automatically rotate per-user log files.
2709  250 log files per tool will be retained from the last 24 hours, and
2710  50 log files per tool from all time.
2711
2712- gEDA/gaf tools now search for data and configuration files in the
2713  standard XDG directories.  By default, these are:
2714
2715  - `/usr/local/share/gEDA/` and `/usr/share/gEDA` for system data
2716  - `/etc/xdg/gEDA/` for system configuration
2717  - `$HOME/.local/share/gEDA/` for per-user data
2718  - `$HOME/.config/gEDA/` for per-user configuration.
2719
2720  However, gEDA/gaf tools will still use `$HOME/.gEDA` for per-user
2721  files if that directory exists, they still obey the `$GEDADATA` and
2722  `$GEDADATARC` environment variables, and by default the search path
2723  includes the installation prefix selected when compiling Lepton.
2724
2725- Lepton tools will now search for Scheme code in the `scheme`
2726  subdirectory of the per-user data directory before anywhere else, to
2727  allow easy low-level Lepton customisation.
2728
2729- The `world-size` rc function has been deprecated, and no longer does
2730  anything.
2731
2732### Changes in `gschem`:
2733
2734- The default editor view bounds have been expanded to allow symbols
2735  to be drawn without needing to translate them to the origin.
2736
2737- The multi-attribute editor now allows navigation between its
2738  controls with <kbd>Tab</kbd> and <kbd>Shift</kbd>+<kbd>Tab</kbd>, a
2739  tooltip for hinting how to add a literal linefeed or tab character,
2740  and a horizontal scrollbar to suppress window resizing.
2741
2742- You can now launch a Scheme Read-Eval-Print Loop (REPL) in gschem's
2743  controlling terminal with 'File → REPL' or with <kbd>F</kbd>,
2744  <kbd>Shift</kbd>+<kbd>R</kbd>.
2745
2746- Fix a crash when closing schematic pages, and several possible
2747  crashes when no page is open.
2748
2749- When undoing an operation the page is zoomed and scaled correctly,
2750  even if the `gschem` window was resized since the operation being
2751  undone.
2752
2753- 'File → Revert' will now detect changes to symbol libraries since
2754  the the page was loaded.  This is helpful when trying to fix things
2755  up when symbols weren't found.
2756
2757- Faster page redraw operations.
2758
2759- Junction dots are now drawn slightly larger to ensure that they are
2760  clearly visible.
2761
2762### Changes in `gnetlist`:
2763
2764- `gnetlist` will no longer warn if some of the symbols in a merged
2765  component (i.e. symbols with the same `refdes` attribute) are
2766  missing an attribute.  For example, you can now attach a `footprint`
2767  attribute to only one symbol in a merged component without warnings.
2768  `gnetlist` continues to warn when it finds conflicting values,
2769  however.
2770
2771- The `gnetlist` REPL is now compatible with Geiser.  Packages,
2772  package pins and pin nets can now be pretty-printed in the REPL.
2773
2774- All rc functions related to hierarchy have been deprecated, and have
2775  been replaced with config file settings.
2776
2777- The `drc` backend has been extensively rewritten and improved.
2778
2779- The `makedepend` backend has been fixed and can now generate Make
2780  rules for hierarchical schematics.  It can also work with
2781  non-numbered schematic names.
2782
2783- The `spice-sdb` backend now emits verbose info to standard error, so
2784  that verbose messages don't end up in the netlist.
2785
2786- The `vams` (Verilog AMS) backend now generates entity files
2787  correctly.
2788
2789- The `redac` backend no longer duplicates connection info.
2790
2791- Several backends no longer emit trailing whitespace.
2792
2793- Changes for backend authors:
2794
2795  - A new `object-id` function has been added to allow backends to
2796    access the object identifiers used during netlist generation.
2797
2798  - The `gnetlist-version` function has been removed.
2799
2800- Internal changes:
2801
2802  - A new Scheme test suite has been added, using the SRFI-64
2803    framework.
2804
2805  - "Graphical" netlists are no longer used during netlist generation.
2806
2807  - Schematic page tree creation and transformation procedures are now
2808    accessible from Scheme.
2809
2810  - A new `(gnetlist schematic)` module provides procedures for
2811    working with schematics as first-class objects during netlisting.
2812
2813  - The new `(gnetlist option)` and `(gnetlist config)` modules
2814    provide procedures for working with `gnetlist`'s command-line
2815    arguments and configuration data.
2816
2817### Scheme API changes
2818
2819- A new procedure, `log!`, has been added to the `(geda log)` module.
2820  It allows Scheme code to emit log messages in the same way that the
2821  tools' C code does.
2822
2823- Two new Scheme procedures for working with source library have been
2824  added to the `(geda library)` module: `source-library-contents`
2825  and `set-source-library-contents!`.
2826
2827- Accessing Lepton values (objects, pages, etc.) via the Scheme API is
2828  now much faster.
2829
2830Please check `info geda-scheme` for full details.
2831
2832### Changes when building from source:
2833
2834- Lepton requires Guile 2.0 or later for build.  However, running the
2835  full test suite requires Guile 2.0.13.
2836
2837- The Lepton source tarball no longer includes `libintl`.  When
2838  building Lepton with internationalisation support, GNU `gettext`
2839  0.18 or later is required.
2840
2841- The configure script now supports an `--enable-contrib` switch.
2842  Unless this is specified, the tools in the `contrib` directory will
2843  not be compiled or installed.
2844
2845- The configure script now supports an `--enable-relocatable` switch.
2846  When specified, Lepton tools do not have the configured prefix
2847  compiled into them. This option is not supported on BSD systems.
2848
2849- The configure script now supports a `--disable-deprecated` switch.
2850  When specified, various deprecated features and behaviour are
2851  disabled, which may break backward-compatibility with some
2852  configurations.
2853
2854----------------------------------------------------------------
2855
2856Please see [NEWS-1.9.2.txt](docs/news/NEWS-1.9.2.txt) for info on
2857pre-1.9.3 changes (before *Lepton EDA* has forked from *geda-gaf*).
2858