<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/src, branch ethomson/codeql</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/'/>
<entry>
<title>Merge pull request #5740 from libgit2/ethomson/zlib</title>
<updated>2020-12-16T00:16:10+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-12-16T00:16:10+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=1865806e466d0b18d399ba877b940ab331d365b3'/>
<id>1865806e466d0b18d399ba877b940ab331d365b3</id>
<content type='text'>
pack: continue zlib while we can make progress</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
pack: continue zlib while we can make progress</pre>
</div>
</content>
</entry>
<entry>
<title>pack: continue zlib while we can make progress</title>
<updated>2020-12-15T23:13:31+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-12-15T23:03:03+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=93f61c5a9f638e76189cef2dbde7839a9af5ff54'/>
<id>93f61c5a9f638e76189cef2dbde7839a9af5ff54</id>
<content type='text'>
Continue the zlib stream as long as we can make progress; stop when we
stop getting output _or_ when zlib stops taking input from us.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Continue the zlib stream as long as we can make progress; stop when we
stop getting output _or_ when zlib stops taking input from us.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #5727 from lhchavez/make-git-diff-fast</title>
<updated>2020-12-13T15:18:12+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-12-13T15:18:12+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=d185ab24af9498cfce524e53bb82229079ad2af5'/>
<id>d185ab24af9498cfce524e53bb82229079ad2af5</id>
<content type='text'>
Cache the parsed submodule config when diffing</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Cache the parsed submodule config when diffing</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #5735 from lhchavez/faster-strntol64</title>
<updated>2020-12-13T13:46:16+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-12-13T13:46:16+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=851e778ec7b1a7d9e3a072322b2e9b976a5241f6'/>
<id>851e778ec7b1a7d9e3a072322b2e9b976a5241f6</id>
<content type='text'>
Make git__strntol64() ~70%* faster</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make git__strntol64() ~70%* faster</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #5384 from ianhattendorf/fix/winhttp-client-cert</title>
<updated>2020-12-13T13:44:56+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-12-13T13:44:56+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=86a1cdd38ee1cad0c578373a3888b92dbcb30106'/>
<id>86a1cdd38ee1cad0c578373a3888b92dbcb30106</id>
<content type='text'>
winhttp: support optional client cert</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
winhttp: support optional client cert</pre>
</div>
</content>
</entry>
<entry>
<title>Make git__strntol64() ~70%* faster</title>
<updated>2020-12-13T01:50:58+00:00</updated>
<author>
<name>lhchavez</name>
<email>lhchavez@lhchavez.com</email>
</author>
<published>2020-12-13T00:51:15+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=e99e833f4808e027de8e984b9b99544ca41e28e2'/>
<id>e99e833f4808e027de8e984b9b99544ca41e28e2</id>
<content type='text'>
This change uses compiler intrinsics to detect overflows instead of
using divisions to detect potential overflow. This makes the code faster
and makes it easier to read as a bonus side-effect!

Some of the things this quickens:

* Config parsing.
* Tree parsing.
* Smart protocol negotiation.

\* Measured by running `libgit2_clar` with `-fno-optimize-sibling-calls
-fno-omit-frame-pointer` under `perf(1)`:

```shell
$ perf diff --symbols=git__strntol64 --compute=ratio \
  --percentage=absolute baseline.data perf.data
\# Event 'cycles'
\#
\# Baseline           Ratio  Shared Object
\# ........  ..............  .............
\#
     0.25%        0.321836  libgit2_clar
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change uses compiler intrinsics to detect overflows instead of
using divisions to detect potential overflow. This makes the code faster
and makes it easier to read as a bonus side-effect!

Some of the things this quickens:

* Config parsing.
* Tree parsing.
* Smart protocol negotiation.

\* Measured by running `libgit2_clar` with `-fno-optimize-sibling-calls
-fno-omit-frame-pointer` under `perf(1)`:

```shell
$ perf diff --symbols=git__strntol64 --compute=ratio \
  --percentage=absolute baseline.data perf.data
\# Event 'cycles'
\#
\# Baseline           Ratio  Shared Object
\# ........  ..............  .............
\#
     0.25%        0.321836  libgit2_clar
```
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix an oops</title>
<updated>2020-12-11T13:13:16+00:00</updated>
<author>
<name>lhchavez</name>
<email>lhchavez@lhchavez.com</email>
</author>
<published>2020-12-11T13:13:16+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=1ab2f577bc070dd7d59cdce6d35b268f3a77fd0d'/>
<id>1ab2f577bc070dd7d59cdce6d35b268f3a77fd0d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Small refactor to make thing tidier</title>
<updated>2020-12-11T13:09:47+00:00</updated>
<author>
<name>lhchavez</name>
<email>lhchavez@lhchavez.com</email>
</author>
<published>2020-12-11T13:08:45+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=6cd0c8534d81509a330b09f619fe3249f1d121d2'/>
<id>6cd0c8534d81509a330b09f619fe3249f1d121d2</id>
<content type='text'>
Also repurposed an unused function and deleted another one.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also repurposed an unused function and deleted another one.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cache the parsed submodule config when diffing</title>
<updated>2020-12-11T04:23:12+00:00</updated>
<author>
<name>lhchavez</name>
<email>lhchavez@lhchavez.com</email>
</author>
<published>2020-12-11T03:52:01+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=41da4e16eb01a7bb19c52bbc4251963be192ba69'/>
<id>41da4e16eb01a7bb19c52bbc4251963be192ba69</id>
<content type='text'>
This change makes that anything that calls `git_diff__from_iterators`
(any of the `git_diff_xxx` functions) only need to parse the
`.gitmodules` file once. This can be avoided by calling
`git_repository_submodule_cache_all(...)`, but we can do that safely for
the user with no change in semantics.

Fixes: #5725
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change makes that anything that calls `git_diff__from_iterators`
(any of the `git_diff_xxx` functions) only need to parse the
`.gitmodules` file once. This can be avoided by calling
`git_repository_submodule_cache_all(...)`, but we can do that safely for
the user with no change in semantics.

Fixes: #5725
</pre>
</div>
</content>
</entry>
<entry>
<title>alloc: set up an allocator that fails before library init</title>
<updated>2020-12-09T13:36:28+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-07-10T07:57:05+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=08f28ff50e3f6fabcc1469fdf4a53c3a3a33eff4'/>
<id>08f28ff50e3f6fabcc1469fdf4a53c3a3a33eff4</id>
<content type='text'>
We require the library to be initialized with git_libgit2_init before it
is functional.  However, if a user tries to uses the library without
doing so - as they might when getting started with the library for the
first time - we will likely crash.

This commit introduces some guard rails - now instead of having _no_
allocator by default, we'll have an allocator that always fails, and
never tries to set an error message (since the thread-local state is
set up by git_libgit2_init).  We've modified the error retrieval
function to (try to) ensure that the library has been initialized before
getting the thread-local error message.

(Unfortunately, we cannot determine if the thread local storage has
actually been configured, this does require initialization by
git_libgit2_init.  But a naive attempt should be good enough for most
cases.)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We require the library to be initialized with git_libgit2_init before it
is functional.  However, if a user tries to uses the library without
doing so - as they might when getting started with the library for the
first time - we will likely crash.

This commit introduces some guard rails - now instead of having _no_
allocator by default, we'll have an allocator that always fails, and
never tries to set an error message (since the thread-local state is
set up by git_libgit2_init).  We've modified the error retrieval
function to (try to) ensure that the library has been initialized before
getting the thread-local error message.

(Unfortunately, we cannot determine if the thread local storage has
actually been configured, this does require initialization by
git_libgit2_init.  But a naive attempt should be good enough for most
cases.)
</pre>
</div>
</content>
</entry>
</feed>
