Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package lttoolbox for openSUSE:Factory 
checked in at 2025-08-15 21:52:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/lttoolbox (Old)
 and      /work/SRC/openSUSE:Factory/.lttoolbox.new.1085 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "lttoolbox"

Fri Aug 15 21:52:27 2025 rev:8 rq:1299482 version:3.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/lttoolbox/lttoolbox.changes      2025-04-11 
16:47:35.613278834 +0200
+++ /work/SRC/openSUSE:Factory/.lttoolbox.new.1085/lttoolbox.changes    
2025-08-15 21:53:56.136798365 +0200
@@ -1,0 +2,7 @@
+Fri Aug 15 00:08:03 UTC 2025 - Jan Engelhardt <[email protected]>
+
+- Update to release 3.8.2
+  * Reuse sequence vectors in State
+  * Treat weighted epsilons as non-epsilons
+
+-------------------------------------------------------------------

Old:
----
  v3.8.0.tar.gz

New:
----
  v3.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ lttoolbox.spec ++++++
--- /var/tmp/diff_new_pack.6L92uj/_old  2025-08-15 21:53:56.688821319 +0200
+++ /var/tmp/diff_new_pack.6L92uj/_new  2025-08-15 21:53:56.692821486 +0200
@@ -18,7 +18,7 @@
 
 Name:           lttoolbox
 %define lname   liblttoolbox3
-Version:        3.8.0
+Version:        3.8.2
 Release:        0
 Summary:        Toolbox for lexical processing and morphological analysis
 License:        GPL-2.0-or-later

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.6L92uj/_old  2025-08-15 21:53:56.736823315 +0200
+++ /var/tmp/diff_new_pack.6L92uj/_new  2025-08-15 21:53:56.740823482 +0200
@@ -1,5 +1,5 @@
-mtime: 1744285331
-commit: d07bca0e777d37e3d5f9fedc5515cfe07c09cfbd4186fc15ccded082230a973f
+mtime: 1755216500
+commit: e7c4e7f11ff6dc5f215fdfe8a303bf852a5c239f80cdc483b46d6ff5f149144e
 url: https://src.opensuse.org/jengelh/lttoolbox
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2025-08-15 02:08:39.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ v3.8.0.tar.gz -> v3.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/CMakeLists.txt 
new/lttoolbox-3.8.2/CMakeLists.txt
--- old/lttoolbox-3.8.0/CMakeLists.txt  2025-03-10 12:25:02.000000000 +0100
+++ new/lttoolbox-3.8.2/CMakeLists.txt  2025-08-04 20:29:18.000000000 +0200
@@ -1,7 +1,7 @@
 cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
 cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
 project(lttoolbox
-       VERSION 3.8.0
+       VERSION 3.8.2
        LANGUAGES CXX C
        )
 set(VERSION ${PROJECT_VERSION})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/lttoolbox/lt_comp.cc 
new/lttoolbox-3.8.2/lttoolbox/lt_comp.cc
--- old/lttoolbox-3.8.0/lttoolbox/lt_comp.cc    2025-03-10 12:25:02.000000000 
+0100
+++ new/lttoolbox-3.8.2/lttoolbox/lt_comp.cc    2025-08-04 20:29:18.000000000 
+0200
@@ -119,7 +119,7 @@
     std::cerr << "Error: Cannot not open file '" << infile << "'." << 
std::endl << std::endl;
     exit(EXIT_FAILURE);
   }
-  initGenericErrorDefaultFunc(NULL);
+  xmlSetGenericErrorFunc(nullptr, nullptr);
 
 
   if(opc == "lr")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/lttoolbox/lt_merge.cc 
new/lttoolbox-3.8.2/lttoolbox/lt_merge.cc
--- old/lttoolbox-3.8.0/lttoolbox/lt_merge.cc   2025-03-10 12:25:02.000000000 
+0100
+++ new/lttoolbox-3.8.2/lttoolbox/lt_merge.cc   2025-08-04 20:29:18.000000000 
+0200
@@ -29,6 +29,7 @@
   cli.add_file_arg("output_file");
   cli.add_bool_arg('u', "unmerge", "Undo the merge");
   cli.add_bool_arg('z', "null-flush", "flush output on the null character");
+  cli.add_bool_arg('h', "help", "print this message and exit");
   cli.parse_args(argc, argv);
 
   auto strs = cli.get_strs();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/lttoolbox/state.cc 
new/lttoolbox-3.8.2/lttoolbox/state.cc
--- old/lttoolbox-3.8.0/lttoolbox/state.cc      2025-03-10 12:25:02.000000000 
+0100
+++ new/lttoolbox-3.8.2/lttoolbox/state.cc      2025-08-04 20:29:18.000000000 
+0200
@@ -60,6 +60,26 @@
   }
 
   state.clear();
+
+  for (auto& it : sequence_pool) {
+    delete it;
+  }
+  sequence_pool.clear();
+}
+
+std::vector<std::pair<int, double>>*
+State::new_sequence() {
+  if (sequence_pool.empty()) {
+    sequence_pool.push_back(new std::vector<std::pair<int, double>>());
+  }
+  auto ret = sequence_pool.back();
+  sequence_pool.pop_back();
+  return ret;
+}
+
+void
+State::free_sequence(std::vector<std::pair<int, double>>* seq) {
+  sequence_pool.push_back(seq);
 }
 
 void
@@ -70,12 +90,15 @@
   {
     delete state[i].sequence;
   }
+  for (auto& it : sequence_pool) {
+    delete it;
+  }
 
   state = s.state;
 
   for(size_t i = 0, limit = state.size(); i != limit; i++)
   {
-    std::vector<std::pair<int, double>> *tmp = new std::vector<std::pair<int, 
double>>();
+    auto tmp = new_sequence();
     *tmp = *(state[i].sequence);
     state[i].sequence = tmp;
   }
@@ -91,7 +114,7 @@
 State::init(Node *initial)
 {
   state.clear();
-  state.push_back(TNodeState(initial, new std::vector<std::pair<int, 
double>>(), false));
+  state.push_back(TNodeState(initial, new_sequence(), false));
   state[0].sequence->clear();
   epsilonClosure();
 }
@@ -105,7 +128,7 @@
   {
     for(int j = 0; j != it->second.size; j++)
     {
-      std::vector<std::pair<int, double>> *new_v = new 
std::vector<std::pair<int, double>>();
+      auto new_v = new_sequence();
       *new_v = *(state[index].sequence);
       if(it->first != 0)
       {
@@ -127,7 +150,7 @@
   {
     for(int j = 0; j != it->second.size; j++)
     {
-      std::vector<std::pair<int, double>> *new_v = new 
std::vector<std::pair<int, double>>();
+      auto new_v = new_sequence();
       *new_v = *(state[index].sequence);
       if(it->first != 0)
       {
@@ -160,7 +183,7 @@
   for(size_t i = 0, limit = state.size(); i != limit; i++)
   {
     apply_into(&new_state, input, i, false);
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -180,7 +203,7 @@
   {
     apply_into_override(&new_state, input, old_sym, new_sym, i, false);
     apply_into_override(&new_state, old_sym, old_sym, new_sym, i, true);
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -207,7 +230,7 @@
     apply_into_override(&new_state, input, old_sym, new_sym, i, false);
     apply_into_override(&new_state, alt, old_sym, new_sym, i, true);
     apply_into_override(&new_state, old_sym, old_sym, new_sym, i, true);
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -233,7 +256,7 @@
   {
     apply_into(&new_state, input, i, false);
     apply_into(&new_state, alt, i, true);
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -255,7 +278,7 @@
     {
       apply_into(&new_state, alt, i, true);
     }
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -271,7 +294,7 @@
     {
       for(int j = 0 ; j != it2->second.size; j++)
       {
-        std::vector<std::pair<int, double>> *tmp = new 
std::vector<std::pair<int, double>>();
+        auto tmp = new_sequence();
         *tmp = *(state[i].sequence);
         if(it2->second.out_tag[j] != 0)
         {
@@ -309,7 +332,7 @@
     apply_into(&new_state, input, i, false);
     apply_into(&new_state, alt1, i, true);
     apply_into(&new_state, alt2, i, true);
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -342,7 +365,7 @@
       apply_into(&new_state, *sit, i, true);
     }
 
-    delete state[i].sequence;
+    free_sequence(state[i].sequence);
   }
 
   state = new_state;
@@ -793,7 +816,7 @@
   {
     if(noOfCompoundElements[i] > minNoOfCompoundElements)
     {
-      delete (*it).sequence;
+      free_sequence((*it).sequence);
       it = state.erase(it);
     }
     else
@@ -821,7 +844,7 @@
       if((seq->at(i)).first == forbiddenSymbol)
       {
         i=-1;
-        delete (*it).sequence;
+        free_sequence((*it).sequence);
         it = state.erase(it);
         found = true;
       }
@@ -895,7 +918,8 @@
           for(unsigned int j=0; j<restart_state->state.size(); j++)
           {
             TNodeState initst = restart_state->state.at(j);
-            std::vector<std::pair<int, double>> *tnvec = new 
std::vector<std::pair<int, double>>;
+            auto tnvec = new_sequence();
+            tnvec->clear();
 
             for(unsigned int k=0; k < state_i.sequence->size(); k++)
             {
@@ -943,7 +967,7 @@
 State::merge(const State& other)
 {
   for (auto& it : other.state) {
-    std::vector<std::pair<int, double>>* tmp = new std::vector<std::pair<int, 
double>>();
+    auto tmp = new_sequence();
     *tmp = *(it.sequence);
     TNodeState ns(it.where, tmp, it.dirty);
     this->state.push_back(std::move(ns));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/lttoolbox/state.h 
new/lttoolbox-3.8.2/lttoolbox/state.h
--- old/lttoolbox-3.8.0/lttoolbox/state.h       2025-03-10 12:25:02.000000000 
+0100
+++ new/lttoolbox-3.8.2/lttoolbox/state.h       2025-08-04 20:29:18.000000000 
+0200
@@ -68,6 +68,12 @@
 
   std::vector<TNodeState> state;
 
+  std::vector<std::vector<std::pair<int, double>>*> sequence_pool;
+  // get or create a sequence vector (may be non-empty)
+  std::vector<std::pair<int, double>>* new_sequence();
+  // return a sequence vector to the pool
+  void free_sequence(std::vector<std::pair<int, double>>*);
+
   /**
    * Destroy function
    */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/lttoolbox/transducer.cc 
new/lttoolbox-3.8.2/lttoolbox/transducer.cc
--- old/lttoolbox-3.8.0/lttoolbox/transducer.cc 2025-03-10 12:25:02.000000000 
+0100
+++ new/lttoolbox-3.8.2/lttoolbox/transducer.cc 2025-08-04 20:29:18.000000000 
+0200
@@ -256,6 +256,7 @@
     c.insert(i);
     auto range = transitions.at(i).equal_range(epsilon_tag);
     for (; range.first != range.second; range.first++) {
+      if (range.first->second.second != default_weight) continue;
       c.insert(range.first->second.first);
       reversed[range.first->second.first].push_back(i);
     }
@@ -356,7 +357,7 @@
       {
         for(auto& it3 : transitions[it2])
         {
-          if(it3.first != epsilon_tag)
+          if(it3.first != epsilon_tag || it3.second.second != default_weight)
           {
             auto& it4 = all_closures[it3.second.first];
             mymap[std::make_pair(it3.first, 
it3.second.second)].insert(it4.begin(), it4.end());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/tests/basictest.py 
new/lttoolbox-3.8.2/tests/basictest.py
--- old/lttoolbox-3.8.0/tests/basictest.py      2025-03-10 12:25:02.000000000 
+0100
+++ new/lttoolbox-3.8.2/tests/basictest.py      2025-08-04 20:29:18.000000000 
+0200
@@ -34,13 +34,13 @@
         output = []
         char = None
         try:
-            char = self.withTimeout(2, process.stdout.read, 1)
+            char = self.withTimeout(10, process.stdout.read, 1)
         except Alarm:
             print("Timeout before reading a single character!", file=stderr)
         while char and char != b'\0':
             output.append(char)
             try:
-                char = self.withTimeout(2, process.stdout.read, 1)
+                char = self.withTimeout(10, process.stdout.read, 1)
             except Alarm:
                 print("Timeout before reading %s chars" % len(output),
                       file=stderr)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/tests/data/more-entry-weights.dix 
new/lttoolbox-3.8.2/tests/data/more-entry-weights.dix
--- old/lttoolbox-3.8.0/tests/data/more-entry-weights.dix       1970-01-01 
01:00:00.000000000 +0100
+++ new/lttoolbox-3.8.2/tests/data/more-entry-weights.dix       2025-08-04 
20:29:18.000000000 +0200
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dictionary>
+  
<alphabet>ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÄÅÆÇÈÉÊËÍÑÒÓÔÕÖØÙÚÜČĐŊŠŦŽabcdefghijklmnopqrstuvwxyzàáâäåæçèéêëíñòóôõöøùúüčđŋšŧž­-</alphabet>
+  <sdefs>
+    <sdef n="n"/>
+    <sdef n="vblex"/>
+    <sdef n="m"/>
+    <sdef n="pr"/>
+    <sdef n="def"/>
+    <sdef n="inf"/>
+    <sdef n="imp"/>
+    <sdef n="pp"/>
+    <sdef n="pprs"/>
+    <sdef n="ger"/>
+    <sdef n="subs"/>
+    <sdef n="pres"/>
+    <sdef n="past"/>
+    <sdef n="p3"/>
+    <sdef n="sg"/>
+    <sdef n="pl"/>
+    <sdef n="gen"/>
+  </sdefs>
+  <pardefs>
+         <pardef n="liv/e__vblex">
+                 <e w="1"><p><l>e</l><r>e<s n="vblex"/><s n="inf"/></r></p></e>
+                 <e w="2"><p><l>e</l><r>e<s n="vblex"/><s n="imp"/></r></p></e>
+                 <e><p><l>ed</l><r>e<s n="vblex"/><s n="pp"/></r></p></e>
+                 <e w="1"><p><l>ing</l><r>e<s n="vblex"/><s 
n="pprs"/></r></p></e>
+                 <e w="3"><p><l>ing</l><r>e<s n="vblex"/><s 
n="ger"/></r></p></e>
+                 <e w="2"><p><l>ing</l><r>e<s n="vblex"/><s 
n="subs"/></r></p></e>
+                 <e><p><l>e</l><r>e<s n="vblex"/><s n="pres"/></r></p></e>
+                 <e><p><l>es</l><r>e<s n="vblex"/><s n="pres"/><s n="p3"/><s 
n="sg"/></r></p></e>
+                 <e><p><l>ed</l><r>e<s n="vblex"/><s n="past"/></r></p></e>
+         </pardef>
+         <pardef n="house__n">
+                 <e><p><l></l><r><s n="n"/><s n="sg"/></r></p></e>
+                 <e r="RL"><p><l>'s</l><r><s n="n"/><s n="sg"/><j/>'s<s 
n="gen"/></r></p></e>
+                 <e><p><l>s</l><r><s n="n"/><s n="pl"/></r></p></e>
+                 <e r="RL"><p><l>s'</l><r><s n="n"/><s n="pl"/><j/>'s<s 
n="gen"/></r></p></e>
+         </pardef>
+  </pardefs>
+  <section id="main" type="standard">
+         <e lm="house" w="1"><i>house</i><par n="house__n"/></e>
+         <e lm="house" w="2"><i>hous</i><par n="liv/e__vblex"/></e>
+  </section>
+</dictionary>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lttoolbox-3.8.0/tests/lt_comp/__init__.py 
new/lttoolbox-3.8.2/tests/lt_comp/__init__.py
--- old/lttoolbox-3.8.0/tests/lt_comp/__init__.py       2025-03-10 
12:25:02.000000000 +0100
+++ new/lttoolbox-3.8.2/tests/lt_comp/__init__.py       2025-08-04 
20:29:18.000000000 +0200
@@ -113,3 +113,9 @@
     restrictflags = ['-v', 'oci']
     inputs = ['abc', 'ab']
     expectedOutputs = ['^abc/*abc$', '^ab/abbb<n><ind>$']
+
+class ConflictingEntryWeights(ProcTest):
+    procflags = ['-W']
+    procdix = 'data/more-entry-weights.dix'
+    inputs = ['house']
+    expectedOutputs = 
['^house/house<n><sg><W:1.000000>/house<vblex><pres><W:2.000000>/house<vblex><inf><W:3.000000>/house<vblex><imp><W:4.000000>$']

Reply via email to