Skip to content

Commit

Permalink
textproc/libxmlb: New port - Library to help create and query binary …
Browse files Browse the repository at this point in the history
…XML blobs

XML is slow to parse and strings inside the document cannot be memory mapped as
they do not have a trailing NUL char. The libxmlb library takes XML source, and
converts it to a structured binary representation with a deduplicated string
table -- where the strings have the NULs included.

This allows an application to mmap the binary XML file, do an XPath query and
return some strings without actually parsing the entire document. This is all
done using (almost) zero allocations and no actual copying of the binary data.

WWW:    https://github.com/hughsie/libxmlb

PR:		258541
  • Loading branch information
tcberner committed Mar 4, 2022
1 parent c0fea4b commit c6d8fb3
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 0 deletions.
1 change: 1 addition & 0 deletions textproc/Makefile
Expand Up @@ -409,6 +409,7 @@
SUBDIR += libxdiff
SUBDIR += libxml++26
SUBDIR += libxml2
SUBDIR += libxmlb
SUBDIR += libxmlbird
SUBDIR += libxode
SUBDIR += libxslt
Expand Down
20 changes: 20 additions & 0 deletions textproc/libxmlb/Makefile
@@ -0,0 +1,20 @@
PORTNAME= libxmlb
DISTVERSION= 0.3.6
CATEGORIES= textproc

MAINTAINER= desktop@FreeBSD.org
COMMENT= Library to help create and query binary XML blobs

LICENSE= LGPL21

BUILD_DEPENDS= gtkdoc-scan:textproc/gtk-doc
LIB_DEPENDS= libstemmer.so:textproc/snowballstemmer

USES= gnome meson pkgconfig localbase:ldflags
USE_GITHUB= yes
GH_ACCOUNT= hughsie
USE_GNOME= glib20 introspection:build

MESON_ARGS= -Dstemmer=true

.include <bsd.port.mk>
3 changes: 3 additions & 0 deletions textproc/libxmlb/distinfo
@@ -0,0 +1,3 @@
TIMESTAMP = 1646369692
SHA256 (hughsie-libxmlb-0.3.6_GH0.tar.gz) = cb529d055c63d705bafd17b5fab8e36153292533668a0aba853514ed0e42862c
SIZE (hughsie-libxmlb-0.3.6_GH0.tar.gz) = 118521
10 changes: 10 additions & 0 deletions textproc/libxmlb/pkg-descr
@@ -0,0 +1,10 @@
XML is slow to parse and strings inside the document cannot be memory mapped as
they do not have a trailing NUL char. The libxmlb library takes XML source, and
converts it to a structured binary representation with a deduplicated string
table -- where the strings have the NULs included.

This allows an application to mmap the binary XML file, do an XPath query and
return some strings without actually parsing the entire document. This is all
done using (almost) zero allocations and no actual copying of the binary data.

WWW: https://github.com/hughsie/libxmlb
62 changes: 62 additions & 0 deletions textproc/libxmlb/pkg-plist
@@ -0,0 +1,62 @@
include/libxmlb-2/libxmlb/xb-builder-fixup.h
include/libxmlb-2/libxmlb/xb-builder-node.h
include/libxmlb-2/libxmlb/xb-builder-source-ctx.h
include/libxmlb-2/libxmlb/xb-builder-source.h
include/libxmlb-2/libxmlb/xb-builder.h
include/libxmlb-2/libxmlb/xb-machine.h
include/libxmlb-2/libxmlb/xb-node-query.h
include/libxmlb-2/libxmlb/xb-node-silo.h
include/libxmlb-2/libxmlb/xb-node.h
include/libxmlb-2/libxmlb/xb-opcode.h
include/libxmlb-2/libxmlb/xb-query-context.h
include/libxmlb-2/libxmlb/xb-query.h
include/libxmlb-2/libxmlb/xb-silo-export.h
include/libxmlb-2/libxmlb/xb-silo-query.h
include/libxmlb-2/libxmlb/xb-silo.h
include/libxmlb-2/libxmlb/xb-stack.h
include/libxmlb-2/libxmlb/xb-string.h
include/libxmlb-2/libxmlb/xb-value-bindings.h
include/libxmlb-2/libxmlb/xb-version.h
include/libxmlb-2/xmlb.h
lib/girepository-1.0/Xmlb-2.0.typelib
lib/libxmlb.so
lib/libxmlb.so.2
lib/libxmlb.so.2.0.0
libdata/pkgconfig/xmlb.pc
libexec/installed-tests/libxmlb/test.xml.gz.gz.gz
libexec/installed-tests/libxmlb/xb-self-test
libexec/xb-tool
share/gir-1.0/Xmlb-2.0.gir
share/gtk-doc/html/libxmlb/annotation-glossary.html
share/gtk-doc/html/libxmlb/api-index-full.html
share/gtk-doc/html/libxmlb/deprecated-api-index.html
share/gtk-doc/html/libxmlb/home.png
share/gtk-doc/html/libxmlb/index.html
share/gtk-doc/html/libxmlb/intro.html
share/gtk-doc/html/libxmlb/left-insensitive.png
share/gtk-doc/html/libxmlb/left.png
share/gtk-doc/html/libxmlb/libxmlb-XbBuilder.html
share/gtk-doc/html/libxmlb/libxmlb-XbBuilderFixup.html
share/gtk-doc/html/libxmlb/libxmlb-XbBuilderNode.html
share/gtk-doc/html/libxmlb/libxmlb-XbBuilderSource.html
share/gtk-doc/html/libxmlb/libxmlb-XbBuilderSourceCtx.html
share/gtk-doc/html/libxmlb/libxmlb-XbMachine.html
share/gtk-doc/html/libxmlb/libxmlb-XbNode.html
share/gtk-doc/html/libxmlb/libxmlb-XbQuery.html
share/gtk-doc/html/libxmlb/libxmlb-XbSilo.html
share/gtk-doc/html/libxmlb/libxmlb-xb-node-query.html
share/gtk-doc/html/libxmlb/libxmlb-xb-opcode.html
share/gtk-doc/html/libxmlb/libxmlb-xb-query-context.html
share/gtk-doc/html/libxmlb/libxmlb-xb-silo-export.html
share/gtk-doc/html/libxmlb/libxmlb-xb-silo-query.html
share/gtk-doc/html/libxmlb/libxmlb-xb-stack.html
share/gtk-doc/html/libxmlb/libxmlb-xb-string.html
share/gtk-doc/html/libxmlb/libxmlb-xb-value-bindings.html
share/gtk-doc/html/libxmlb/libxmlb.devhelp2
share/gtk-doc/html/libxmlb/libxmlb.html
share/gtk-doc/html/libxmlb/right-insensitive.png
share/gtk-doc/html/libxmlb/right.png
share/gtk-doc/html/libxmlb/style.css
share/gtk-doc/html/libxmlb/up-insensitive.png
share/gtk-doc/html/libxmlb/up.png
share/installed-tests/libxmlb/libxmlb.test

0 comments on commit c6d8fb3

Please sign in to comment.