<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:comic sans ms,sans-serif"><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code>Hi Everyone,
Thank you Stephan. After your mail, I looked <span class="gmail-hljs-keyword">into</span> this more.
Here<span class="gmail-hljs-string">'s what I found:
<a href="https://cgit.freedesktop.org/libreoffice/core/log/unoidl?h=libreoffice-4.2.8.2&id=72b8e929af5bcfb7d17a74de636fb1ef5204297b&showmsg=1">https://cgit.freedesktop.org/libreoffice/core/log/unoidl?h=libreoffice-4.2.8.2&id=72b8e929af5bcfb7d17a74de636fb1ef5204297b&showmsg=1</a>
(This is in reverse chronological order.) <br></span></code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre>commit - 320571bf701a092d0f2d15fd4589ae271802a03f</pre></span><code><span class="gmail-hljs-string">
The cgit logs from 2013, primarily by Stephan Bergmann, document
a massive refactoring of LibreOffice'</span>s core UNO infrastructure.
<b>The "Old World" (Legacy, pre<span class="gmail-hljs-number">-2013</span>):</b>
LibreOffice inherited a <span class="gmail-hljs-keyword">system</span> <span class="gmail-hljs-keyword">from</span> OpenOffice.org that used a
toolchain <span class="gmail-hljs-keyword">of</span> idlc, regmerge, <span class="gmail-hljs-keyword">and</span> regview.
<span class="gmail-hljs-operator">-</span> .idl files compiled <span class="gmail-hljs-keyword">by</span> idlc <span class="gmail-hljs-keyword">into</span> <span class="gmail-hljs-type">binary</span> .urd (UNO Reflection
Data).
<span class="gmail-hljs-operator">-</span> regmerge <span class="gmail-hljs-keyword">then</span> combined these .urd files <span class="gmail-hljs-keyword">into</span> a <span class="gmail-hljs-keyword">large</span>, complex,
legacy<span class="gmail-hljs-operator">-</span>format <span class="gmail-hljs-type">binary</span> registry file (.rdb).
<span class="gmail-hljs-operator">-</span> regview was the tool designed <span class="gmail-hljs-keyword">to</span> read this <span class="gmail-hljs-keyword">old</span> format.
<b>The "New World" (The <span class="gmail-hljs-number">2013</span> unoidl Refactoring):</b>
<span class="gmail-hljs-operator">-</span> Goal: Replace the <span class="gmail-hljs-keyword">old</span>, cumbersome <span class="gmail-hljs-keyword">system</span> <span class="gmail-hljs-keyword">with</span> something
more modern, efficient, <span class="gmail-hljs-keyword">and</span> easier <span class="gmail-hljs-keyword">to</span> maintain.
<span class="gmail-hljs-operator">-</span> Solution: The unoidl <span class="gmail-hljs-keyword">module</span> was created <span class="gmail-hljs-keyword">to</span> be the central
authority <span class="gmail-hljs-keyword">for</span> handling UNO type information.
<b>The <span class="gmail-hljs-keyword">New</span> Tools:</b>
<span class="gmail-hljs-operator">-</span> <b>unoidl<span class="gmail-hljs-operator">-</span>write:</b> Replaced idlc <span class="gmail-hljs-keyword">and</span> regmerge. It compiles .idl
files directly <span class="gmail-hljs-keyword">into</span> the <span class="gmail-hljs-keyword">new</span>, more efficient <span class="gmail-hljs-type">binary</span> format.
<span class="gmail-hljs-operator">-</span> <b>unoidl<span class="gmail-hljs-operator">-</span>read:</b> Replaced regview. Its <span class="gmail-hljs-keyword">specific</span> purpose <span class="gmail-hljs-keyword">is</span>
<span class="gmail-hljs-keyword">to</span> read the <span class="gmail-hljs-keyword">new</span> .rdb files <span class="gmail-hljs-keyword">and</span> dump their contents <span class="gmail-hljs-keyword">in</span> a
human<span class="gmail-hljs-operator">-</span>readable, IDL<span class="gmail-hljs-operator">-</span><span class="gmail-hljs-keyword">like</span> format.
<span class="gmail-hljs-operator">-</span> <b>unoidl<span class="gmail-hljs-operator">-</span><span class="gmail-hljs-keyword">check</span></b>: Replaced regcompare <span class="gmail-hljs-keyword">for</span> API compatibility.
<b>What this history tells us:</b>
<span class="gmail-hljs-operator">-</span> <i>Why regview Failed:</i> My <span class="gmail-hljs-keyword">initial</span> PoC attempts <span class="gmail-hljs-keyword">to</span> use regview
<span class="gmail-hljs-keyword">on</span> a modern LibreOffice build failed because I was <span class="gmail-hljs-keyword">using</span> a
legacy tool <span class="gmail-hljs-keyword">on</span> <span class="gmail-hljs-keyword">new</span> files. We were trying <span class="gmail-hljs-keyword">to</span> read a Blu<span class="gmail-hljs-operator">-</span>ray
<span class="gmail-hljs-keyword">with</span> a VHS player.
<span class="gmail-hljs-operator">-</span> <i>The Correct Tool:</i> This confirms that unoidl<span class="gmail-hljs-operator">-</span>read <span class="gmail-hljs-keyword">is</span> the
correct, modern tool <span class="gmail-hljs-keyword">for</span> our goal <span class="gmail-hljs-keyword">of</span> getting a <span class="gmail-hljs-keyword">static</span> dump
<span class="gmail-hljs-keyword">of</span> the UNO API types.
<span class="gmail-hljs-operator">-</span> RDBs <span class="gmail-hljs-keyword">are</span> the Compiled Truth: It shows that the .rdb files
<span class="gmail-hljs-keyword">are</span> the canonical, compiled source <span class="gmail-hljs-keyword">of</span> truth <span class="gmail-hljs-keyword">for</span> UNO types.
<b>Key Commits that Tell the Story:</b>
<span class="gmail-hljs-operator">-</span> "WIP: Experimental new binary type.rdb format" (Stephan
Bergmann, Feb<span class="gmail-hljs-operator">/</span>Mar<span class="gmail-hljs-operator">/</span>Apr <span class="gmail-hljs-number">2013</span>): Documents <span class="gmail-hljs-keyword">new</span> RDB format <span class="gmail-hljs-keyword">and</span> unoidl
<span class="gmail-hljs-keyword">module</span> creation. Explicitly aimed <span class="gmail-hljs-keyword">to</span> "ultimately remove
modules store and registry."
<span class="gmail-hljs-operator">-</span> "New unoidl-read tool to translate registries into readable
.idl files" (Stephan Bergmann, Sep <span class="gmail-hljs-number">2013</span>): Introduces our
<span class="gmail-hljs-keyword">primary</span> <span class="gmail-hljs-keyword">static</span> dumping tool.
<span class="gmail-hljs-operator">-</span> "New unoidl-check tool to replace regcompare" (Stephan
Bergmann, Sep <span class="gmail-hljs-number">2013</span>): This further shows the entire legacy
toolchain (regcompare, regmerge, idlc, regview) was
being systematically replaced <span class="gmail-hljs-keyword">by</span> a <span class="gmail-hljs-keyword">new</span>, unified unoidl<span class="gmail-hljs-operator">-</span><span class="gmail-hljs-operator">*</span>
toolset.
<span class="gmail-hljs-operator">-</span> "Revert 'WIP: Experimental new binary type.rdb format'"
(multiple times): The log shows this was a complex transition
<span class="gmail-hljs-keyword">with</span> reverts <span class="gmail-hljs-keyword">and</span> re<span class="gmail-hljs-operator">-</span>applications. This <span class="gmail-hljs-keyword">is</span> normal <span class="gmail-hljs-keyword">for</span> a change
<span class="gmail-hljs-keyword">of</span> this magnitude <span class="gmail-hljs-keyword">and</span> explains why the legacy code <span class="gmail-hljs-keyword">and</span> <span class="gmail-hljs-keyword">new</span> code
had <span class="gmail-hljs-keyword">to</span> co<span class="gmail-hljs-operator">-</span>exist.
<b>Why XML <span class="gmail-hljs-keyword">for</span> "Services" RDBs?</b>
It turns <span class="gmail-hljs-keyword">out</span> services.rdb files <span class="gmail-hljs-keyword">are</span> intentionally kept <span class="gmail-hljs-keyword">in</span> XML,
<span class="gmail-hljs-keyword">not</span> <span class="gmail-hljs-keyword">by</span> accident. Here<span class="gmail-hljs-string">'s why:
1. Legacy support & human readability: While .rdb files for
types switched to new binary, service registries remained
XML "for backwards compatibility" [<a href="https://listarchives.libreoffice.org/global/dev/2013/msg14613.html">1</a>, <a href="https://wiki.documentfoundation.org/Documentation/DevGuide/Extensions">2</a>, <a href="https://docs.libreoffice.org/store.html">3</a>]. Human-readable
XML eases maintenance, debugging, and scripting.
2. Consistent tooling across UNO bridges: Developers noted that
`program/services` .rdb files are XML-based. The Python-UNO
bridge, for instance, depends on those XML service definitions;
binary would hinder Python tools [<a href="https://www.openoffice.org/udk/python/python-bridge.html">4</a>, <a href="https://ask.libreoffice.org/t/no-helloworldpython-nor-any-other-python-script-using-appimage/107376/21">5</a>]. </span><br></code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><span class="gmail-hljs-string">3. Consistency with ODF: LibreOffice'</span>s file formats (ODT, ODS)
<span class="gmail-hljs-keyword">are</span> XML<span class="gmail-hljs-operator">-</span>based (ODF). Keeping service registration <span class="gmail-hljs-keyword">in</span> XML
aligns <span class="gmail-hljs-keyword">with</span> this broader architectural philosophy.</code></pre></span><code><br></code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"></span><code>
<b>TL;DR:</b>
<u>File Type</u> <u>Format</u> <u>Reason</u>
types.rdb <span class="gmail-hljs-type">Binary</span> Efficient, compact, <span class="gmail-hljs-keyword">new</span> unoidl<span class="gmail-hljs-operator">-</span>write toolchain
services.rdb XML Human<span class="gmail-hljs-operator">-</span>readable, backwards compatibility, supports
scripting tools <span class="gmail-hljs-keyword">like</span> Python<span class="gmail-hljs-operator">-</span>UNO.
</code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code>So, the "mixed-format" nature <span class="gmail-hljs-keyword">of</span> the registry <span class="gmail-hljs-keyword">is</span> a deliberate <span class="gmail-hljs-keyword">and</span>
pragmatic design choice, balancing performance (<span class="gmail-hljs-keyword">for</span> <span class="gmail-hljs-type">binary</span> types)
<span class="gmail-hljs-keyword">with</span> interoperability <span class="gmail-hljs-keyword">and</span> maintainability (<span class="gmail-hljs-keyword">for</span> XML services).</code></pre></span></pre></span><code>
<b>Flowchart: Evolution <span class="gmail-hljs-keyword">of</span> UNO RDBs</b>
<b><span class="gmail-hljs-keyword">Old</span> World (Pre<span class="gmail-hljs-number">-2013</span>) UNO Type Processing:</b>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +--------+ +---------+</span>
<span class="gmail-hljs-operator">|</span> .idl <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-comment">--> | idlc | --> | .urd |</span>
<span class="gmail-hljs-operator">|</span> (Source) <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> (<span class="gmail-hljs-type">Binary</span>)<span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +--------+ +---------+</span>
<span class="gmail-hljs-operator">|</span>
v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +-----------+</span>
<span class="gmail-hljs-operator">|</span> regmerge <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-comment">--> | Legacy |</span>
<span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> .rdb <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> (<span class="gmail-hljs-type">Binary</span>) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +-----------+</span>
<span class="gmail-hljs-operator">|</span>
v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">---------+</span>
<span class="gmail-hljs-operator">|</span> regview <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span> (Dump) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">---------+</span>
<b><span class="gmail-hljs-keyword">New</span> World (<span class="gmail-hljs-number">2013</span> Refactoring) UNO Type Processing:</b>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +--------------+ +----------+</span>
<span class="gmail-hljs-operator">|</span> .idl <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-comment">--> | unoidl-write | --> | New |</span>
<span class="gmail-hljs-operator">|</span> (Source) <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> .rdb <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +--------------+ | (Binary) |</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+</span>
<span class="gmail-hljs-operator">|</span>
v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------+</span>
<span class="gmail-hljs-operator">|</span> unoidl<span class="gmail-hljs-operator">-</span>read<span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span> (Dump) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">------------+</span>
<b>Special <span class="gmail-hljs-keyword">Case</span>: UNO Service Processing (Remains XML):</b>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +------------------+ +-----------------+</span>
<span class="gmail-hljs-operator">|</span> Services <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-comment">--> | XML .rdb files | --> | Text Editor |</span>
<span class="gmail-hljs-operator">|</span> (Config) <span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> (e.g., pyuno.rdb)<span class="gmail-hljs-operator">|</span> <span class="gmail-hljs-operator">|</span> (Human Read) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------+ +------------------+ +-----------------+</span>
<span class="gmail-hljs-operator">|</span>
v
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------------------------+</span>
<span class="gmail-hljs-operator">|</span> Runtime Service Manager <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">|</span> (Loads <span class="gmail-hljs-keyword">for</span> Component Info) <span class="gmail-hljs-operator">|</span>
<span class="gmail-hljs-operator">+</span><span class="gmail-hljs-comment">----------------------------+</span>
<b><br></b></code><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><b>Our Project</b><span class="gmail-hljs-string"><b>'s possible Cache Philosophy (Hybrid Approach):</b>
+-----------------------+ +---------------------------+
| Static Data Sources | --> | Offline Tool |
| (UNO APIs, Std Libs) | | (like unoidl-write + PoC) |
+-----------------------+ +---------------------------+
|
v
+-----------------------+
| Binary Cache File |
| (e.g., SQLite .db) |
+-----------------------+
|
v
+------------------------------------+
| IDE Startup: Load Binary Cache |
| into Master Analyzer (In-Memory) |
+------------------------------------+
|
v
+------------------------------------+
| Dynamic Data (User Code, Vars) |
| (Analyzed In-Memory by MA) |
+------------------------------------+
|
v
+----------------------------------------+
| Live IDE Cache (In-Memory Hybrid) |
| (Can be saved to XML/JSON for session) |
+----------------------------------------+</span></code></pre></span><br><code><b><br>Our Project</b><span class="gmail-hljs-string"><b>'s Cache Philosophy - Considerations for a Hybrid Approach:</b>
Drawing lessons from LibreOffice'</span>s RDB evolution, we <span class="gmail-hljs-keyword">can</span>
consider a hybrid cache design <span class="gmail-hljs-keyword">for</span> our project. This would
address performance needs while maintaining flexibility.
<u>Potential Approaches:</u>
<span class="gmail-hljs-operator">-</span> <b>The Core <span class="gmail-hljs-keyword">Static</span> Cache (UNO APIs, Standard Libraries):</b> <span class="gmail-hljs-keyword">For</span>
this <span class="gmail-hljs-keyword">large</span> amount <span class="gmail-hljs-keyword">of</span> relatively stable data, we can consider
storing it <span class="gmail-hljs-keyword">in</span> a fast, compact, <span class="gmail-hljs-type">binary</span> format. This could
potentially use something <span class="gmail-hljs-keyword">like</span> SQLite <span class="gmail-hljs-keyword">for</span> efficient querying
<span class="gmail-hljs-keyword">and</span> retrieval. This <span class="gmail-hljs-keyword">is</span> analogous <span class="gmail-hljs-keyword">to</span> the <span class="gmail-hljs-keyword">new</span> <span class="gmail-hljs-type">binary</span> types.rdb
format, aiming <span class="gmail-hljs-keyword">for</span> quick IDE startup.
<span class="gmail-hljs-operator">-</span> <b>The <span class="gmail-hljs-keyword">Dynamic</span> Cache <span class="gmail-hljs-operator">&</span> <span class="gmail-hljs-keyword">User</span><span class="gmail-hljs-operator">-</span><span class="gmail-hljs-keyword">Specific</span> Data:</b> Information about the
<span class="gmail-hljs-keyword">user</span><span class="gmail-hljs-string">'s currently open modules, local variables, and editor
state is highly dynamic. For debugging or saving the IDE'</span>s
session state, a more readable format <span class="gmail-hljs-keyword">like</span> JSON <span class="gmail-hljs-keyword">or</span> XML could be
beneficial. This <span class="gmail-hljs-keyword">is</span> analogous <span class="gmail-hljs-keyword">to</span> the XML services.rdb files.
<span class="gmail-hljs-operator">-</span> <b>The Hybrid <span class="gmail-hljs-keyword">System</span> Concept:</b> Our Master Analyzer would produce
IdeSymbolInfo objects <span class="gmail-hljs-keyword">in</span> memory. <span class="gmail-hljs-keyword">For</span> persistence, we can
consider options <span class="gmail-hljs-keyword">to</span>:
<span class="gmail-hljs-operator">-</span> Build an offline tool (<span class="gmail-hljs-keyword">similar</span> <span class="gmail-hljs-keyword">to</span> unoidl<span class="gmail-hljs-operator">-</span>write) <span class="gmail-hljs-keyword">using</span> our
PoC logic (theCoreReflection, BASIC parser) <span class="gmail-hljs-keyword">to</span> generate
a comprehensive <span class="gmail-hljs-type">binary</span> cache file <span class="gmail-hljs-keyword">of</span> <span class="gmail-hljs-keyword">all</span> shippable UNO <span class="gmail-hljs-keyword">and</span>
Standard<span class="gmail-hljs-operator">/</span>ScriptForge library info, possibly <span class="gmail-hljs-keyword">using</span> SQLite.
This file would ideally ship <span class="gmail-hljs-keyword">with</span> LibreOffice.
<span class="gmail-hljs-operator">-</span> <span class="gmail-hljs-keyword">At</span> runtime, the IDE would load this <span class="gmail-hljs-type">binary</span> cache <span class="gmail-hljs-keyword">into</span> memory.
The Master Analyzer would <span class="gmail-hljs-keyword">then</span> <span class="gmail-hljs-keyword">add</span> <span class="gmail-hljs-keyword">to</span> <span class="gmail-hljs-keyword">or</span> <span class="gmail-hljs-keyword">overlay</span> this cache
<span class="gmail-hljs-keyword">with</span> information <span class="gmail-hljs-keyword">from</span> the <span class="gmail-hljs-keyword">user</span><span class="gmail-hljs-string">'s open documents and unsaved
changes. This live part might not need disk saving, or could
be saved as XML/JSON for session state.
<b>This ideated approach aims for:</b>
- Optimized Startup Performance: From loading a pre-compiled
binary cache (e.g., SQLite).
- Flexibility & Dynamicism: From in-memory analysis of live code.
- Improved Debuggability: From clear static/dynamic separation.
[1] <a href="https://listarchives.libreoffice.org/global/dev/2013/msg14613.html">https://listarchives.libreoffice.org/global/dev/2013/msg14613.html</a>
[2] <a href="https://wiki.documentfoundation.org/Documentation/DevGuide/Extensions">https://wiki.documentfoundation.org/Documentation/DevGuide/Extensions</a>
[3] <a href="https://docs.libreoffice.org/store.html">https://docs.libreoffice.org/store.html</a>
[4] <a href="https://www.openoffice.org/udk/python/python-bridge.html">https://www.openoffice.org/udk/python/python-bridge.html</a>
[5] <a href="https://ask.libreoffice.org/t/no-helloworldpython-nor-any-other-python-script-using-appimage/107376/21">https://ask.libreoffice.org/t/no-helloworldpython-nor-any-other-python-script-using-appimage/107376/21</a></span></code><br></pre><pre><code><span class="gmail-hljs-string"> Week 4 mail chain - </span></code><a href="https://lists.freedesktop.org/archives/libreoffice/2025-June/093392.html">https://lists.freedesktop.org/archives/libreoffice/2025-June/093392.html</a></pre><pre><span class="gmail-router-outlet-wrapper gmail-ng-tns-c4274809755-0"><pre><code><span class="gmail-hljs-string"><br>I look forward to discussing these considerations and
potential strategies with the community and specially with mentors</span></code></pre></span></pre></span><br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Tue, 17 Jun 2025 at 01:32, Stephan Bergmann <<a href="mailto:stephan.bergmann@allotropia.de">stephan.bergmann@allotropia.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 6/16/25 18:37, Devansh Varshney wrote:<br>
> *2. Legacy RDBs*: Interestingly, when I tried to run unoidl-read on some<br>
> other RDBs from workdir/Rdb/ (like pyuno.rdb), I got a different error:<br>
> <br>
> |$ unoidl-read $PWD/workdir/Rdb/pyuno.rdb Bad input <...>: cannot open <br>
> legacy file: 6|<br>
> <br>
> This confirms the unoidl/README.md note that unoidl::Manager can<br>
> detect the old legacy format but may not be able to read all of them with<br>
> this specific tool. It's a great insight into the mixed-format nature of the<br>
> registry system.<br>
Traditionally, the original store-based binary rdb format was used for <br>
both "types" files (storing information about UNOIDL entities) and <br>
"services" files (storing information about UNO components). Both those <br>
kinds of rdb files have since been changed, using a different binary <br>
format for the "types" files and an XML format for the "services" files. <br>
Somewhat confusingly, all those kinds of files still use the ".rdb" <br>
extension.<br>
<br>
unoidl-read can read "types" files (both the old and new binary <br>
formats), but not "services" files (the XML format)---and <br>
workdir/Rdb/pyuno.rdb is such a "services" file.<br>
</blockquote></div><div><br clear="all"></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-family:monospace"><b>Regards,</b></span></div><div><span style="font-family:monospace;color:rgb(153,0,255)"><b>Devansh</b></span><br></div></div></div></div>