Clone from the Lumiera Master-Repo (as Test for Forgejo) https://git.lumiera.org/
Find a file
Ichthyostega 0661b27c74 clean-up: resolve some Clang conformance divergences (see #928)
Knowledge-Technology(Claude Opus 5) used
 - to analyse and reassess the situation
 - to discuss and weigh the findings and develop solutions
 - to perform the selected mitigation and verify success

----

= Report by Claude =

A sweep with Clang-22 over all 597 translation units (driven from the newly
generated compilation database) showed 271 of them failing, yet with the
2502 diagnostics tracing back to very few root sites. This resolves those
where GCC is simply the more permissive of the two; the remaining clusters
are a matter of design and are left alone for now.

 * `using Alias::OriginalName;` does *not* declare inherited constructors.
   Per [namespace.udecl] a using-declarator names constructors only when its
   terminal name equals the last component of the nested-name-specifier -- so
   through an alias, the terminal name is read as the injected-class-name,
   i.e. a type, and Clang then demands `typename`. Clang is right here.
   Affects `hetero-data.hpp` (19 TUs) and `iter-source.hpp` (62 TUs); in the
   latter the alias is renamed `_I` -> `Adapter` while we are at it.
   Note `iter-source` as a whole awaits a design review, see #1125

 * P1787R6 requires a template-argument-list after the `template` keyword.
   `holder.template emplace (...)` in `opaque-holder.hpp` and two sites in
   `node-builder.hpp` supply none, so the keyword has to go (83 TUs).

 * A default template argument may be given only once per scope. The
   out-of-class definition of `OutputSlot::AllocState` repeated the default
   from its declaration in 'output-slot.hpp' -- note the friend-declaration
   further down in the same header already got this right.

 * `constexpr auto ROUGH_PRECISION = pow (10, -3)` is not a constant
   expression by the standard; only GCC accepts it, through a builtin.
   Hence `util::ipow()` in 'util-quant.hpp', an exponentiation with integral
   exponent by square-and-multiply, as a counterpart to `ilog2()`. Exact for
   representable base and result, and the static_assert documents that
   `ipow(10.0,-3)` is bit-identical to `1e-3`. 193 TUs depended on this
   single line.

Furthermore, two findings made while surveying:

 * `lib/stat/statistic.hpp` held a second, dormant instance of the same
   `pow` problem, in a `round<places>()` helper that nothing in Lumiera ever
   instantiates -- which is why Clang never saw it. Since the helper is also
   the naive and imprecise formulation, it is removed here; a note records
   that it stays in use upstream in yoshimi-test, where this header comes
   from, and that decimal rounding belongs to #1360 if ever wanted here.

 * The alias `DataBuilder` was defined twice, identically, in
   'weaving-pattern-builder.hpp' and in 'node-builder.hpp' which includes
   the former. Both compilers tolerate the duplicate definition and only
   Clang objects to the repeated default argument, which is why this went
   unnoticed. The duplicate is dropped and its documentation moved to the
   surviving definition -- together with a @todo, since `DataBuilder`,
   `SizMark` and `UseHeapAlloc` are vocabulary of the node-builder DSL and
   reside where they do by accident of include order.
2026-10-01 02:57:44 +02:00
admin Buildsystem: generate a compilation database for clangd (closes: #1436) 2026-10-01 01:08:23 +02:00
data Merge branch 'rel/0.pre.04' into integration 2025-12-03 14:44:55 +01:00
doc Buildsystem: generate a compilation database for clangd (closes: #1436) 2026-10-01 01:08:23 +02:00
po release prep: remove defunct autotools buildsystem 2013-10-29 03:47:50 +01:00
research Library: deep dive into type reconciliation and tuple handling 2026-04-07 06:32:23 +02:00
src clean-up: resolve some Clang conformance divergences (see #928) 2026-10-01 02:57:44 +02:00
target update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
tests Parameters: better API for opaque transfer 2026-07-25 21:52:51 +02:00
uml OutputSlot: integration with buffer management (+documentation) 2026-05-31 01:44:54 +02:00
wiki Workflow: integrate some work notes in my mindmap 2026-07-29 22:15:31 +02:00
.clangd Buildsystem: generate a compilation database for clangd (closes: #1436) 2026-10-01 01:08:23 +02:00
.gitignore Doxygen: adjust ignores 2015-08-17 01:14:33 +02:00
AUTHORS Release: compile authorship information 2025-11-24 00:52:47 +01:00
COPYING Release: check and update licensing information 2025-11-26 00:57:25 +01:00
DIR_INFO update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
LICENSE Release: compile authorship information 2025-11-24 00:52:47 +01:00
NEWS Status: Release published -- now again in Development Phase 2025-12-11 05:11:55 +01:00
README DOC: normalise towards a single form of gitweb-URL 2026-02-15 23:02:52 +01:00
SConstruct Buildsystem: generate a compilation database for clangd (closes: #1436) 2026-10-01 01:08:23 +02:00

Lumiera -- the video NLE for Linux
==================================
Version: 0.pre.05~dev
:Date: 11/2025

*************************************************************
Lumiera is a non-linear video editing and compositing tool.
The Application will allow to edit footage using common
multimedia formats and audio/video stream codecs.

Lumiera features nondestructive editing, compositing tools,
a selection of effects plugins, processing in RGB, YUV and
RGB-float colour models and the ability to mix media with
differing sizes and framerates. Lumiera is especially well
suited for large and elaborate professional editing tasks
with lots of material, several scenes, nested sequences,
colour grading, 3D support, full fledged sound montage
and multiple edit versions prepared in parallel.

NOTE: as of 11/2025, Lumiera is in early development stage;
it is not usable yet. The above describes the Lumiera project
vision, the implementation of which will require many more years.

Visit https://Lumiera.org and join the mailing list
when interested in Lumiera planning and development.
****************************************************************


Lumiera pre-Alpha Versions
--------------------------

.This source tree doesn't contain a working video editing application yet.
Rather, it contains the framework and technology core of the envisioned
Application »Lumiera«. What we attempt to build here is innovative,
and we must engage in a series of integration steps to search for
suitable pathways towards our envisaged architecture.

Since 2024, the integration of the Render Engine takes centre stage,
in an effort to establish a steady state realtime processing and
display pipeline, still relying on generated video data rather
than using a library to read and playback a video file.

- https://Lumiera.org/documentation/design/governance/integration.html[Integration steps]
- See also https://issues.lumiera.org/roadmap[Project roadmap]




Build Requirements
------------------

For building Lumiera, you'll need:

 * C++23 compiler GCC >=14 (Clang fails atm)
 * Git Version management system
 * https://www.scons.org/[SCons build system]
 * https://www.boost.org/[Boost libraries]
 * https://github.com/bplaum/gavl[GAVL library]
 * https://www.alsa-project.org/[ALSA (libasound2-dev)]
 * https://nobug.pipapo.org/[NoBug library]
 * https://gtkmm.gnome.org/en/[gtkmm]
 * https://cgit.freedesktop.org/xorg/lib/libXv[libXv]
 * https://wiki.gnome.org/Projects/LibRsvg[lib rSVG]
 * https://git.lumiera.org/gitweb?p=debian/gdl;a=summary[lib GDL]
 * https://git.lumiera.org/gitweb?p=debian/gdlmm;a=summary[GDL-mm bindings]

Further information:

 * Online documentation at https://Lumiera.org/download.html[Build and install].
 * Documentation is also available in-tree in 'doc/user/tutorials/building.txt'
 * Source code can be retrieved with `git clone git://git.lumiera.org/LUMIERA`



Debian Package
--------------
Hermann Vosseler (aka Ichthyo) maintains a *Debian* packaging of the source tree

- the package definition can be pulled from `git://git.lumiera.org/debian/lumiera/`
- the package can be built by `git-buildpackage`