[Xapian-tickets] [Xapian] #523: Migrate from XS Search::Xapian to SWIG version

Xapian nobody at xapian.org
Thu Apr 9 07:46:46 BST 2020


#523: Migrate from XS Search::Xapian to SWIG version
----------------------------+-------------------------------
 Reporter:  Olly Betts      |             Owner:  Olly Betts
     Type:  defect          |            Status:  assigned
 Priority:  normal          |         Milestone:  1.5.0
Component:  Search::Xapian  |           Version:  git master
 Severity:  normal          |        Resolution:
 Keywords:                  |        Blocked By:
 Blocking:                  |  Operating System:  All
----------------------------+-------------------------------
Changes (by Olly Betts):

 * status:  new => assigned
 * milestone:  1.4.6 => 1.5.0


Old description:

> This ticket is to track the issues remaining to solve before the SWIG
> Perl bindings are a complete replacement for the XS ones.
>
>  * {{{"$it"}}} doesn't work in SWIG, while in XS it dereferences (for
> !TermIterator and !ValueIterator at least).  I did some digging last year
> and it seemed there was some problematic interaction with eq/ne which I
> didn't get to the bottom of.
>  * "Stringify" is also missing for subclasses of Error (which in the XS
> version I'm using in 1.2.4 to give backwards compatibility for cases
> which were still throwing string exceptions in 1.2.3).
>  * XS version has simple anon-sub wrappers for !MatchDecider and
> !ExpandDecider.  SWIG doesn't support directors for Perl in current
> releases (though there's work on a branch).  But perhaps we can support
> these simple wrappers without needing directors.
>  * The SWIG-generated version is fussier about what sort of scalars you
> pass - for example, if an integer is expected, passing a string
> containing an integer or floating point number doesn't work, at least in
> some cases.
>
> One option is to deprecate the stringify stuff and make the switch at the
> start of the next release series.

New description:

 This ticket is to track the issues remaining to solve before the SWIG Perl
 bindings are a complete replacement for the XS ones.

  * ~~~{{{"$it"}}} doesn't work in SWIG, while in XS it dereferences (for
 !TermIterator and !ValueIterator at least).  I did some digging last year
 and it seemed there was some problematic interaction with eq/ne which I
 didn't get to the bottom of.~~~
  * ~~~"Stringify" is also missing for subclasses of Error (which in the XS
 version I'm using in 1.2.4 to give backwards compatibility for cases which
 were still throwing string exceptions in 1.2.3).~~~
  * XS version has simple anon-sub wrappers for !MatchDecider and
 !ExpandDecider.  SWIG doesn't support directors for Perl in current
 releases (though there's work on a branch).  But perhaps we can support
 these simple wrappers without needing directors.
  * The SWIG-generated version is fussier about what sort of scalars you
 pass - for example, if an integer is expected, passing a string containing
 an integer or floating point number doesn't work, at least in some cases.

 One option is to deprecate the stringify stuff and make the switch at the
 start of the next release series.

--
Comment:

 The convert to integer overload on `PositionIterator` also seems to cause
 problems, though I haven't tried to dig into why.

 I think these magic implicit method calls on conversions to string and
 integer are too confusing, and it's better not to support them.  This is
 incompatible with `Search::Xapian`, but we can document this and it's easy
 to write code which works with both versions - just make the method call
 explicit.
-- 
Ticket URL: <https://trac.xapian.org/ticket/523#comment:17>
Xapian <https://xapian.org/>
Xapian


More information about the Xapian-tickets mailing list