summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.adoc142
-rw-r--r--_doc/CHANGELOG.html748
2 files changed, 614 insertions, 276 deletions
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index 3a3e72a9..a2e17c11 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -1,21 +1,52 @@
= CHANGELOG
Shulhan <ms@kilabit.info>
:toc:
+:sectanchors:
+:sectlinks:
This library is released every month, usually at the first week of month.
+[#v0.35.0]
+== share v0.35.0 (2022-03-04)
-== share v0.35.0 (2022-0x-xx)
+[#v0.35.0_breaking_changes]
+=== Breaking changes
+
+* lib/email: change the Header and Body fields on Message to non-pointer.
++
+The idea is to minimize GC pressure on system with many messages,
+minimize checking for nil value, and make an empty Message ready to use
+without any initialization.
+
+* lib/smtp: refactoring NewClient to use struct instead of parameters.
++
+Previously, to create new client one must pass three parameters to
+NewClient function: localName, remoteURL, and insecure.
+If we want to add another parameters in the future, it will cause the
+function signature changes.
++
+This changes simplify creating NewClient by passing single struct
+with new parameters: AuthUser, AuthPass, and AuthMechanism.
+If both AuthUser and AuthPass is not empty, the NewClient will
+authenticate the connection, minimize number of step on the caller.
+
+* lib/smtp: rename Mechanism to SaslMechanism.
+[#v0.35.0_new_features]
=== New features
-* cmd/xtrk: command line interface to uncompress and/or unarchive file
+* cmd/sendemail: command line interface to send an email.
++
+The sendemail command is proof of concept on how to use lib/email and
+lib/smtp to write and send email through SMTP.
+
+* cmd/xtrk: command line interface to uncompress and/or un-archive file.
+
--
xtrk accept single file to uncompress and/or archived into a directory
output dir".
If directory output "dir" is not defined, it will be set to current
-directoy.
+directory.
The compression and archive format is detected automatically based on the
following file input extension:
@@ -30,8 +61,84 @@ following file input extension:
The input file will be removed on success.
--
+[#v0.35.0_enhancements]
=== Enhancements
+* lib/dns: increase the default UDP packet size to 1232.
++
+The value is based on recommendation by https://dnsflagday.net/2020/
+to prevent IP fragmentation when supporting EDNS message.
+
+* lib/memfs: export the Remount method.
++
+The Remount method reset the memfs instance to force rescanning
+the files again from file system.
+
+* lib/email: set the Date and Message-ID on Message Pack.
++
+--
+Calling Pack now set the Date header if its not exist, using the local
+time; and the message-id header if its not exist using the following
+format:
+
+ <epoch>.<random-8-chars>@<local-hostname>
+
+The random-8-chars is Seed-ed from Epoch(), so does the boundary.
+--
+
+* lib/email: make Message Pack works with single text or HTML part.
++
+Previously, the Pack method generate multipart/alternative message only.
++
+Since the Message now can set the body text and HTML, without using
+NewMultipart, the Pack method need to be able to accommodate this.
+
+* lib/email: add methods to modify Message.
++
+Previously, a Message can be created only using NewMultipart, which
+generate message with text and HTML.
++
+This changes add methods to compose a Message: AddCC, AddTo, SetBodyHtml,
+SetBodyText, SetCC, SetFrom, SetSubject, and SetTo.
+
+* lib/email: set the header Date field on NewMultipart.
++
+The Date field value is set to current time on the system that
+generated the message.
++
+The date format is set to "Mon, 2 Jan 2006 15:04:05 -0700" according
+to RFC 5322 section 3.3.
+
+* lib/smtp: add status codes from RFC 4954.
++
+--
+The following status codes are added,
+
+* 432: StatusPasswordTransitionNeeded, from section 4.7.12.
+* 454: StatusTemporaryAuthFailure, from section 4.7.0.
+* 534: StatusAuthMechanismTooWeak, from section 5.7.9.
+--
+
+* lib/mlog: make the Outf method always add new line at the end.
++
+One of common mistakes when using logging library is to put the new line
+"\n" at the end of format string, which cause delayed output written
+to Stdout (the OS wait for "\n" as signal for printing).
++
+This changes check new line to every call of Outf method and add it if
+its not exist.
++
+If the caller need to call Outf multiple times before ending it with
+new line, they should handle it manually by storing into temporary
+buffer first and call Outf at the end.
+
+* lib/memfs: add option CommentHeader to EmbedOptions.
++
+The CommentHeader option allow user to define custom header to the Go
+generated file.
+The string value is not checked, whether it's a comment or not, it
+will rendered as is.
+
* lib/ini: make the Marshal on map field sorted by keys
+
--
@@ -59,9 +166,20 @@ This changes fix this issue by sorting the keys on ADT.Amap on
Marshal-ing, to make the written output predictable.
--
+[#v0.35.0_bug_fixes]
=== Bug fixes
-* lib/dns: check for possible index out of range when unpacking RR
+* lib/io: fix DirWatcher not removing old files on rename.
++
+Previously, if a sub-directory being watched by DirWatcher is renamed,
+the old directory does not get removed from field dirs.
++
+This commit fix this issue by deleting the sub directory on unmpSubdirs.
++
+While at it, guard any read/write to dirs field with mutex to prevent
+data race.
+
+* lib/dns: check for possible index out of range when unpacking RR.
+
There is a possibility that record data (rdata) length inside the
packet is greater than length of packet itself. Some of the reasons are
@@ -71,6 +189,22 @@ server by sending invalid packet).
This changes fix this issue by checking the index and rdata length with
the length of packet before consuming the rdata itself.
+[#v0.35.0_chores]
+=== Chores
+
+* lib/smtp: provide an example of how to create MailTx from email package.
++
+If one read the current documentation on how to use the Client.SendTx,
+there is a missing link on how to create and populate MailTx.
++
+This changes provide the example using the email package to generate
+the MailTx Data.
+
+* lib/mlog: change default mlog instance to non-pointer.
++
+Since the default mlog instance is a global variable, using non-pointer
+give advantages on minimize GC pressure.
+
== share v0.34.0 (2022-02-05)
diff --git a/_doc/CHANGELOG.html b/_doc/CHANGELOG.html
index 773bd415..ec25add8 100644
--- a/_doc/CHANGELOG.html
+++ b/_doc/CHANGELOG.html
@@ -187,6 +187,14 @@ dd {
margin: 2.5rem 0;
}
+.ulist li .paragraph {
+ margin-bottom: 1em;
+}
+
+.ulist li .paragraph {
+ margin-bottom: 1em;
+}
+
/** Custom classes */
#toctitle {
display: none;
@@ -236,59 +244,61 @@ dd {
<div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
-<li><a href="#_share_v0_35_0_2022_0x_xx">share v0.35.0 (2022-0x-xx)</a>
+<li><a href="#v0.35.0">share v0.35.0 (2022-03-04)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features">New features</a></li>
-<li><a href="#_enhancements">Enhancements</a></li>
-<li><a href="#_bug_fixes">Bug fixes</a></li>
+<li><a href="#v0.35.0_breaking_changes">Breaking changes</a></li>
+<li><a href="#v0.35.0_new_features">New features</a></li>
+<li><a href="#v0.35.0_enhancements">Enhancements</a></li>
+<li><a href="#v0.35.0_bug_fixes">Bug fixes</a></li>
+<li><a href="#v0.35.0_chores">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_34_0_2022_02_05">share v0.34.0 (2022-02-05)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes">Breaking changes</a></li>
-<li><a href="#_new_features_1">New features</a></li>
-<li><a href="#_enhancements_1">Enhancements</a></li>
+<li><a href="#_new_features">New features</a></li>
+<li><a href="#_enhancements">Enhancements</a></li>
<li><a href="#_chores">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_33_0_2022_01_09">share v0.33.0 (2022-01-09)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_2">New features</a></li>
+<li><a href="#_new_features_1">New features</a></li>
<li><a href="#_breaking_changes_1">Breaking changes</a></li>
-<li><a href="#_bug_fixes_1">Bug fixes</a></li>
-<li><a href="#_enhancements_2">Enhancements</a></li>
+<li><a href="#_bug_fixes">Bug fixes</a></li>
+<li><a href="#_enhancements_1">Enhancements</a></li>
<li><a href="#_chores_1">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_32_0_2021_12_03">share v0.32.0 (2021-12-03)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_2">Breaking changes</a></li>
-<li><a href="#_new_features_3">New features</a></li>
-<li><a href="#_bug_fixes_2">Bug fixes</a></li>
-<li><a href="#_enhancements_3">Enhancements</a></li>
+<li><a href="#_new_features_2">New features</a></li>
+<li><a href="#_bug_fixes_1">Bug fixes</a></li>
+<li><a href="#_enhancements_2">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_31_0_2021_11_04">share v0.31.0 (2021-11-04)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_3">Breaking changes</a></li>
-<li><a href="#_new_features_4">New features</a></li>
-<li><a href="#_bug_fixes_3">Bug fixes</a></li>
+<li><a href="#_new_features_3">New features</a></li>
+<li><a href="#_bug_fixes_2">Bug fixes</a></li>
<li><a href="#_chores_2">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_30_0_2021_10_04">share v0.30.0 (2021-10-04)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_4">Breaking changes</a></li>
-<li><a href="#_new_features_5">New features</a></li>
-<li><a href="#_bug_fixes_4">Bug fixes</a></li>
-<li><a href="#_enhancements_4">Enhancements</a></li>
+<li><a href="#_new_features_4">New features</a></li>
+<li><a href="#_bug_fixes_3">Bug fixes</a></li>
+<li><a href="#_enhancements_3">Enhancements</a></li>
<li><a href="#_chores_3">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_29_2_2021_09_06">share v0.29.2 (2021-09-06)</a>
<ul class="sectlevel2">
-<li><a href="#_bug_fixes_5">Bug fixes</a></li>
-<li><a href="#_enhancements_5">Enhancements</a></li>
+<li><a href="#_bug_fixes_4">Bug fixes</a></li>
+<li><a href="#_enhancements_4">Enhancements</a></li>
<li><a href="#_chores_4">Chores</a></li>
</ul>
</li>
@@ -297,28 +307,28 @@ dd {
<ul class="sectlevel2">
<li><a href="#_new_feature">New feature</a></li>
<li><a href="#_breaking_changes_5">Breaking changes</a></li>
-<li><a href="#_enhancements_6">Enhancements</a></li>
+<li><a href="#_enhancements_5">Enhancements</a></li>
<li><a href="#_bug_fix">Bug fix</a></li>
</ul>
</li>
<li><a href="#_share_v0_28_0_2021_07_06">share v0.28.0 (2021-07-06)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_6">Breaking changes</a></li>
-<li><a href="#_enhancements_7">Enhancements</a></li>
+<li><a href="#_enhancements_6">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_27_0_2021_06_05">share v0.27.0 (2021-06-05)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_7">Breaking changes</a></li>
-<li><a href="#_new_features_6">New features</a></li>
-<li><a href="#_enhancements_8">Enhancements</a></li>
-<li><a href="#_bug_fixes_6">Bug fixes</a></li>
+<li><a href="#_new_features_5">New features</a></li>
+<li><a href="#_enhancements_7">Enhancements</a></li>
+<li><a href="#_bug_fixes_5">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_26_0_2021_05_03">share v0.26.0 (2021-05-03)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_7">New features</a></li>
-<li><a href="#_enhancements_9">Enhancements</a></li>
+<li><a href="#_new_features_6">New features</a></li>
+<li><a href="#_enhancements_8">Enhancements</a></li>
<li><a href="#_chores_5">Chores</a></li>
</ul>
</li>
@@ -326,209 +336,209 @@ dd {
<li><a href="#_share_v0_25_0_2021_04_06">share v0.25.0 (2021-04-06)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_8">Breaking changes</a></li>
-<li><a href="#_new_features_8">New features</a></li>
-<li><a href="#_enhancements_10">Enhancements</a></li>
+<li><a href="#_new_features_7">New features</a></li>
+<li><a href="#_enhancements_9">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_24_0_2021_03_06">share v0.24.0 (2021-03-06)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_9">Breaking changes</a></li>
-<li><a href="#_new_features_9">New features</a></li>
-<li><a href="#_enhancements_11">Enhancements</a></li>
-<li><a href="#_bug_fixes_7">Bug fixes</a></li>
+<li><a href="#_new_features_8">New features</a></li>
+<li><a href="#_enhancements_10">Enhancements</a></li>
+<li><a href="#_bug_fixes_6">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_23_0_2021_02_05">share v0.23.0 (2021-02-05)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_10">Breaking changes</a></li>
-<li><a href="#_new_features_10">New features</a></li>
-<li><a href="#_enhancements_12">Enhancements</a></li>
-<li><a href="#_bug_fixes_8">Bug fixes</a></li>
+<li><a href="#_new_features_9">New features</a></li>
+<li><a href="#_enhancements_11">Enhancements</a></li>
+<li><a href="#_bug_fixes_7">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_22_0_2021_01_06">share v0.22.0 (2021-01-06)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_11">Breaking changes</a></li>
-<li><a href="#_new_features_11">New features</a></li>
-<li><a href="#_enhancements_13">Enhancements</a></li>
+<li><a href="#_new_features_10">New features</a></li>
+<li><a href="#_enhancements_12">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_21_0_2020_12_06">share v0.21.0 (2020-12-06)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_12">Breaking changes</a></li>
-<li><a href="#_new_features_12">New features</a></li>
-<li><a href="#_bug_fixes_9">Bug fixes</a></li>
-<li><a href="#_enhancements_14">Enhancements</a></li>
+<li><a href="#_new_features_11">New features</a></li>
+<li><a href="#_bug_fixes_8">Bug fixes</a></li>
+<li><a href="#_enhancements_13">Enhancements</a></li>
<li><a href="#_chores_6">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_20_1_2020_11_08">share v0.20.1 (2020-11-08)</a>
<ul class="sectlevel2">
-<li><a href="#_bug_fixes_10">Bug fixes</a></li>
-<li><a href="#_enhancements_15">Enhancements</a></li>
+<li><a href="#_bug_fixes_9">Bug fixes</a></li>
+<li><a href="#_enhancements_14">Enhancements</a></li>
<li><a href="#_chores_7">Chores</a></li>
</ul>
</li>
<li><a href="#_share_v0_20_0_2020_10_05">share v0.20.0 (2020-10-05)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_13">New features</a></li>
-<li><a href="#_enhancements_16">Enhancements</a></li>
+<li><a href="#_new_features_12">New features</a></li>
+<li><a href="#_enhancements_15">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_19_0_2020_09_08">share v0.19.0 (2020-09-08)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_13">Breaking changes</a></li>
-<li><a href="#_new_features_14">New features</a></li>
-<li><a href="#_bug_fixes_11">Bug fixes</a></li>
+<li><a href="#_new_features_13">New features</a></li>
+<li><a href="#_bug_fixes_10">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_18_0_2020_08_06">share v0.18.0 (2020-08-06)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_14">Breaking changes</a></li>
-<li><a href="#_bug_fixes_12">Bug fixes</a></li>
-<li><a href="#_enhancements_17">Enhancements</a></li>
+<li><a href="#_bug_fixes_11">Bug fixes</a></li>
+<li><a href="#_enhancements_16">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_17_0_2020_07_05">share v0.17.0 (2020-07-05)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_15">Breaking changes</a></li>
-<li><a href="#_bug_fixes_13">Bug fixes</a></li>
-<li><a href="#_enhancements_18">Enhancements</a></li>
+<li><a href="#_bug_fixes_12">Bug fixes</a></li>
+<li><a href="#_enhancements_17">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_16_0_2020_06_05">share v0.16.0 (2020-06-05)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_16">Breaking changes</a></li>
-<li><a href="#_bug_fixes_14">Bug fixes</a></li>
-<li><a href="#_new_features_15">New features</a></li>
-<li><a href="#_enhancements_19">Enhancements</a></li>
+<li><a href="#_bug_fixes_13">Bug fixes</a></li>
+<li><a href="#_new_features_14">New features</a></li>
+<li><a href="#_enhancements_18">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_15_0_2020_05_04">share v0.15.0 (2020-05-04)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_17">Breaking changes</a></li>
-<li><a href="#_new_features_16">New features</a></li>
-<li><a href="#_enhancements_20">Enhancements</a></li>
-<li><a href="#_bug_fixes_15">Bug fixes</a></li>
+<li><a href="#_new_features_15">New features</a></li>
+<li><a href="#_enhancements_19">Enhancements</a></li>
+<li><a href="#_bug_fixes_14">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_14_0_2020_04_03">share v0.14.0 (2020-04-03)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_18">Breaking changes</a></li>
-<li><a href="#_new_features_17">New features</a></li>
-<li><a href="#_enhancements_21">Enhancements</a></li>
-<li><a href="#_bug_fixes_16">Bug fixes</a></li>
+<li><a href="#_new_features_16">New features</a></li>
+<li><a href="#_enhancements_20">Enhancements</a></li>
+<li><a href="#_bug_fixes_15">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_13_0_2020_03_11">share v0.13.0 (2020-03-11)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_19">Breaking changes</a></li>
-<li><a href="#_new_features_18">New features</a></li>
-<li><a href="#_enhancements_22">Enhancements</a></li>
-<li><a href="#_bug_fixes_17">Bug Fixes</a></li>
+<li><a href="#_new_features_17">New features</a></li>
+<li><a href="#_enhancements_21">Enhancements</a></li>
+<li><a href="#_bug_fixes_16">Bug Fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_12_0_2020_02_13">share v0.12.0 (2020-02-13)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_20">Breaking changes</a></li>
-<li><a href="#_new_features_19">New features</a></li>
-<li><a href="#_enhancements_23">Enhancements</a></li>
-<li><a href="#_bug_fixes_18">Bug fixes</a></li>
+<li><a href="#_new_features_18">New features</a></li>
+<li><a href="#_enhancements_22">Enhancements</a></li>
+<li><a href="#_bug_fixes_17">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_11_0_2019_12_26">share v0.11.0 (2019-12-26)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_21">Breaking changes</a></li>
-<li><a href="#_new_features_20">New features</a></li>
-<li><a href="#_enhancements_24">Enhancements</a></li>
-<li><a href="#_bug_fixes_19">Bug fixes</a></li>
+<li><a href="#_new_features_19">New features</a></li>
+<li><a href="#_enhancements_23">Enhancements</a></li>
+<li><a href="#_bug_fixes_18">Bug fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_10_2_2019_12_07">share v0.10.2 (2019-12-07)</a>
<ul class="sectlevel2">
-<li><a href="#_bug_fixes_20">Bug Fixes</a></li>
+<li><a href="#_bug_fixes_19">Bug Fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_10_1_2019_12_05">share v0.10.1 (2019-12-05)</a>
<ul class="sectlevel2">
-<li><a href="#_bug_fixes_21">Bug Fixes</a></li>
-<li><a href="#_enhancements_25">Enhancements</a></li>
+<li><a href="#_bug_fixes_20">Bug Fixes</a></li>
+<li><a href="#_enhancements_24">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_10_0_2019_11_05">share v0.10.0 (2019-11-05)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_21">New Features</a></li>
+<li><a href="#_new_features_20">New Features</a></li>
<li><a href="#_breaking_changes_22">Breaking Changes</a></li>
-<li><a href="#_enhancements_26">Enhancements</a></li>
-<li><a href="#_bug_fixes_22">Bug Fixes</a></li>
+<li><a href="#_enhancements_25">Enhancements</a></li>
+<li><a href="#_bug_fixes_21">Bug Fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_9_0_2019_10_08">share v0.9.0 (2019-10-08)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_22">New Features</a></li>
+<li><a href="#_new_features_21">New Features</a></li>
<li><a href="#_breaking_changes_23">Breaking Changes</a></li>
-<li><a href="#_bug_fixes_23">Bug Fixes</a></li>
-<li><a href="#_enhancements_27">Enhancements</a></li>
+<li><a href="#_bug_fixes_22">Bug Fixes</a></li>
+<li><a href="#_enhancements_26">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_8_2_2019_09_05">share v0.8.2 (2019-09-05)</a>
<ul class="sectlevel2">
-<li><a href="#_enhancements_28">Enhancements</a></li>
+<li><a href="#_enhancements_27">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_8_1_2019_08_05">share v0.8.1 (2019-08-05)</a>
<ul class="sectlevel2">
-<li><a href="#_enhancements_29">Enhancements</a></li>
+<li><a href="#_enhancements_28">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_8_0_2019_07_09">share v0.8.0 (2019-07-09)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_24">Breaking changes</a></li>
-<li><a href="#_new_features_23">New Features</a></li>
-<li><a href="#_enhancements_30">Enhancements</a></li>
+<li><a href="#_new_features_22">New Features</a></li>
+<li><a href="#_enhancements_29">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_7_0_2019_06_14">share v0.7.0 (2019-06-14)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_25">Breaking Changes</a></li>
-<li><a href="#_new_features_24">New Features</a></li>
-<li><a href="#_enhancements_31">Enhancements</a></li>
-<li><a href="#_bug_fixes_24">Bug Fixes</a></li>
+<li><a href="#_new_features_23">New Features</a></li>
+<li><a href="#_enhancements_30">Enhancements</a></li>
+<li><a href="#_bug_fixes_23">Bug Fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_6_1_2019_05_11">share v0.6.1 (2019-05-11)</a></li>
<li><a href="#_share_v0_6_0_2019_05_07">share v0.6.0 (2019-05-07)</a>
<ul class="sectlevel2">
<li><a href="#_breaking_changes_26">Breaking Changes</a></li>
-<li><a href="#_new_features_25">New Features</a></li>
-<li><a href="#_bug_fixes_25">Bug Fixes</a></li>
+<li><a href="#_new_features_24">New Features</a></li>
+<li><a href="#_bug_fixes_24">Bug Fixes</a></li>
<li><a href="#_documentation">Documentation</a></li>
</ul>
</li>
<li><a href="#_share_v0_5_0_2019_04_02">share v0.5.0 (2019-04-02)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_26">New Features</a></li>
-<li><a href="#_enhancements_32">Enhancements</a></li>
+<li><a href="#_new_features_25">New Features</a></li>
+<li><a href="#_enhancements_31">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_4_0_2019_03_01">share v0.4.0 (2019-03-01)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_27">New Features</a></li>
-<li><a href="#_enhancements_33">Enhancements</a></li>
+<li><a href="#_new_features_26">New Features</a></li>
+<li><a href="#_enhancements_32">Enhancements</a></li>
<li><a href="#_fixes">Fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_3_0_2019_02_01">share v0.3.0 (2019-02-01)</a>
<ul class="sectlevel2">
<li><a href="#_features_changes">Features Changes</a></li>
-<li><a href="#_enhancements_34">Enhancements</a></li>
+<li><a href="#_enhancements_33">Enhancements</a></li>
<li><a href="#_fixes_1">Fixes</a></li>
</ul>
</li>
<li><a href="#_share_v0_2_0_2019_01_02">share v0.2.0 (2019-01-02)</a>
<ul class="sectlevel2">
-<li><a href="#_new_features_28">New Features</a></li>
-<li><a href="#_enhancements_35">Enhancements</a></li>
+<li><a href="#_new_features_27">New Features</a></li>
+<li><a href="#_enhancements_34">Enhancements</a></li>
</ul>
</li>
<li><a href="#_share_v0_1_0_2018_11_29">share v0.1.0 (2018-11-29)</a></li>
@@ -545,21 +555,61 @@ dd {
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_35_0_2022_0x_xx">share v0.35.0 (2022-0x-xx)</h2>
+<h2 id="v0.35.0"><a class="anchor" href="#v0.35.0"></a><a class="link" href="#v0.35.0">share v0.35.0 (2022-03-04)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features">New features</h3>
+<h3 id="v0.35.0_breaking_changes"><a class="anchor" href="#v0.35.0_breaking_changes"></a><a class="link" href="#v0.35.0_breaking_changes">Breaking changes</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>lib/email: change the Header and Body fields on Message to non-pointer.</p>
+<div class="paragraph">
+<p>The idea is to minimize GC pressure on system with many messages,
+minimize checking for nil value, and make an empty Message ready to use
+without any initialization.</p>
+</div>
+</li>
+<li>
+<p>lib/smtp: refactoring NewClient to use struct instead of parameters.</p>
+<div class="paragraph">
+<p>Previously, to create new client one must pass three parameters to
+NewClient function: localName, remoteURL, and insecure.
+If we want to add another parameters in the future, it will cause the
+function signature changes.</p>
+</div>
+<div class="paragraph">
+<p>This changes simplify creating NewClient by passing single struct
+with new parameters: AuthUser, AuthPass, and AuthMechanism.
+If both AuthUser and AuthPass is not empty, the NewClient will
+authenticate the connection, minimize number of step on the caller.</p>
+</div>
+</li>
+<li>
+<p>lib/smtp: rename Mechanism to SaslMechanism.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="v0.35.0_new_features"><a class="anchor" href="#v0.35.0_new_features"></a><a class="link" href="#v0.35.0_new_features">New features</a></h3>
<div class="ulist">
<ul>
<li>
-<p>cmd/xtrk: command line interface to uncompress and/or unarchive file</p>
+<p>cmd/sendemail: command line interface to send an email.</p>
+<div class="paragraph">
+<p>The sendemail command is proof of concept on how to use lib/email and
+lib/smtp to write and send email through SMTP.</p>
+</div>
+</li>
+<li>
+<p>cmd/xtrk: command line interface to uncompress and/or un-archive file.</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>xtrk accept single file to uncompress and/or archived into a directory
output dir".
If directory output "dir" is not defined, it will be set to current
-directoy.</p>
+directory.</p>
</div>
<div class="paragraph">
<p>The compression and archive format is detected automatically based on the
@@ -597,10 +647,125 @@ following file input extension:</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements">Enhancements</h3>
+<h3 id="v0.35.0_enhancements"><a class="anchor" href="#v0.35.0_enhancements"></a><a class="link" href="#v0.35.0_enhancements">Enhancements</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>lib/dns: increase the default UDP packet size to 1232.</p>
+<div class="paragraph">
+<p>The value is based on recommendation by <a href="https://dnsflagday.net/2020/" class="bare">https://dnsflagday.net/2020/</a>
+to prevent IP fragmentation when supporting EDNS message.</p>
+</div>
+</li>
+<li>
+<p>lib/memfs: export the Remount method.</p>
+<div class="paragraph">
+<p>The Remount method reset the memfs instance to force rescanning
+the files again from file system.</p>
+</div>
+</li>
+<li>
+<p>lib/email: set the Date and Message-ID on Message Pack.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>Calling Pack now set the Date header if its not exist, using the local
+time; and the message-id header if its not exist using the following
+format:</p>
+</div>
+<div class="literalblock">
+<div class="content">
+<pre>&lt;epoch&gt;.&lt;random-8-chars&gt;@&lt;local-hostname&gt;</pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The random-8-chars is Seed-ed from Epoch(), so does the boundary.</p>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>lib/email: make Message Pack works with single text or HTML part.</p>
+<div class="paragraph">
+<p>Previously, the Pack method generate multipart/alternative message only.</p>
+</div>
+<div class="paragraph">
+<p>Since the Message now can set the body text and HTML, without using
+NewMultipart, the Pack method need to be able to accommodate this.</p>
+</div>
+</li>
+<li>
+<p>lib/email: add methods to modify Message.</p>
+<div class="paragraph">
+<p>Previously, a Message can be created only using NewMultipart, which
+generate message with text and HTML.</p>
+</div>
+<div class="paragraph">
+<p>This changes add methods to compose a Message: AddCC, AddTo, SetBodyHtml,
+SetBodyText, SetCC, SetFrom, SetSubject, and SetTo.</p>
+</div>
+</li>
+<li>
+<p>lib/email: set the header Date field on NewMultipart.</p>
+<div class="paragraph">
+<p>The Date field value is set to current time on the system that
+generated the message.</p>
+</div>
+<div class="paragraph">
+<p>The date format is set to "Mon, 2 Jan 2006 15:04:05 -0700" according
+to RFC 5322 section 3.3.</p>
+</div>
+</li>
+<li>
+<p>lib/smtp: add status codes from RFC 4954.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The following status codes are added,</p>
+</div>
<div class="ulist">
<ul>
<li>
+<p>432: StatusPasswordTransitionNeeded, from section 4.7.12.</p>
+</li>
+<li>
+<p>454: StatusTemporaryAuthFailure, from section 4.7.0.</p>
+</li>
+<li>
+<p>534: StatusAuthMechanismTooWeak, from section 5.7.9.</p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</li>
+<li>
+<p>lib/mlog: make the Outf method always add new line at the end.</p>
+<div class="paragraph">
+<p>One of common mistakes when using logging library is to put the new line
+"n" at the end of format string, which cause delayed output written
+to Stdout (the OS wait for "n" as signal for printing).</p>
+</div>
+<div class="paragraph">
+<p>This changes check new line to every call of Outf method and add it if
+its not exist.</p>
+</div>
+<div class="paragraph">
+<p>If the caller need to call Outf multiple times before ending it with
+new line, they should handle it manually by storing into temporary
+buffer first and call Outf at the end.</p>
+</div>
+</li>
+<li>
+<p>lib/memfs: add option CommentHeader to EmbedOptions.</p>
+<div class="paragraph">
+<p>The CommentHeader option allow user to define custom header to the Go
+generated file.
+The string value is not checked, whether it&#8217;s a comment or not, it
+will rendered as is.</p>
+</div>
+</li>
+<li>
<p>lib/ini: make the Marshal on map field sorted by keys</p>
<div class="openblock">
<div class="content">
@@ -640,11 +805,25 @@ Marshal-ing, to make the written output predictable.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes">Bug fixes</h3>
+<h3 id="v0.35.0_bug_fixes"><a class="anchor" href="#v0.35.0_bug_fixes"></a><a class="link" href="#v0.35.0_bug_fixes">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
-<p>lib/dns: check for possible index out of range when unpacking RR</p>
+<p>lib/io: fix DirWatcher not removing old files on rename.</p>
+<div class="paragraph">
+<p>Previously, if a sub-directory being watched by DirWatcher is renamed,
+the old directory does not get removed from field dirs.</p>
+</div>
+<div class="paragraph">
+<p>This commit fix this issue by deleting the sub directory on unmpSubdirs.</p>
+</div>
+<div class="paragraph">
+<p>While at it, guard any read/write to dirs field with mutex to prevent
+data race.</p>
+</div>
+</li>
+<li>
+<p>lib/dns: check for possible index out of range when unpacking RR.</p>
<div class="paragraph">
<p>There is a possibility that record data (rdata) length inside the
packet is greater than length of packet itself. Some of the reasons are
@@ -659,13 +838,38 @@ the length of packet before consuming the rdata itself.</p>
</ul>
</div>
</div>
+<div class="sect2">
+<h3 id="v0.35.0_chores"><a class="anchor" href="#v0.35.0_chores"></a><a class="link" href="#v0.35.0_chores">Chores</a></h3>
+<div class="ulist">
+<ul>
+<li>
+<p>lib/smtp: provide an example of how to create MailTx from email package.</p>
+<div class="paragraph">
+<p>If one read the current documentation on how to use the Client.SendTx,
+there is a missing link on how to create and populate MailTx.</p>
+</div>
+<div class="paragraph">
+<p>This changes provide the example using the email package to generate
+the MailTx Data.</p>
+</div>
+</li>
+<li>
+<p>lib/mlog: change default mlog instance to non-pointer.</p>
+<div class="paragraph">
+<p>Since the default mlog instance is a global variable, using non-pointer
+give advantages on minimize GC pressure.</p>
+</div>
+</li>
+</ul>
+</div>
+</div>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_34_0_2022_02_05">share v0.34.0 (2022-02-05)</h2>
+<h2 id="_share_v0_34_0_2022_02_05"><a class="anchor" href="#_share_v0_34_0_2022_02_05"></a><a class="link" href="#_share_v0_34_0_2022_02_05">share v0.34.0 (2022-02-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes">Breaking changes</h3>
+<h3 id="_breaking_changes"><a class="anchor" href="#_breaking_changes"></a><a class="link" href="#_breaking_changes">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -686,7 +890,7 @@ the name of table where the state of migration will be saved.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_1">New features</h3>
+<h3 id="_new_features"><a class="anchor" href="#_new_features"></a><a class="link" href="#_new_features">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -750,7 +954,7 @@ DownloadRequest.Output (a io.Writer).</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_1">Enhancements</h3>
+<h3 id="_enhancements"><a class="anchor" href="#_enhancements"></a><a class="link" href="#_enhancements">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -766,7 +970,7 @@ but the RegisterTextHandler does not have any error.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores">Chores</h3>
+<h3 id="_chores"><a class="anchor" href="#_chores"></a><a class="link" href="#_chores">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -786,7 +990,7 @@ as global variable so any tests can references it.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_33_0_2022_01_09">share v0.33.0 (2022-01-09)</h2>
+<h2 id="_share_v0_33_0_2022_01_09"><a class="anchor" href="#_share_v0_33_0_2022_01_09"></a><a class="link" href="#_share_v0_33_0_2022_01_09">share v0.33.0 (2022-01-09)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Happy New Year!</p>
@@ -805,7 +1009,7 @@ intended "share", and sorry if its too many breaking changes.</p>
See you again next year.</p>
</div>
<div class="sect2">
-<h3 id="_new_features_2">New features</h3>
+<h3 id="_new_features_1"><a class="anchor" href="#_new_features_1"></a><a class="link" href="#_new_features_1">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -860,7 +1064,7 @@ With single parameter, it will print the time based on that epoch.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_1">Breaking changes</h3>
+<h3 id="_breaking_changes_1"><a class="anchor" href="#_breaking_changes_1"></a><a class="link" href="#_breaking_changes_1">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -935,7 +1139,7 @@ compression by itself.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_1">Bug fixes</h3>
+<h3 id="_bug_fixes"><a class="anchor" href="#_bug_fixes"></a><a class="link" href="#_bug_fixes">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -972,7 +1176,7 @@ and we need to check it to make the migration can run without an error.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_2">Enhancements</h3>
+<h3 id="_enhancements_1"><a class="anchor" href="#_enhancements_1"></a><a class="link" href="#_enhancements_1">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1062,7 +1266,7 @@ directly, not through New() function.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_1">Chores</h3>
+<h3 id="_chores_1"><a class="anchor" href="#_chores_1"></a><a class="link" href="#_chores_1">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1087,13 +1291,13 @@ at the same times.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_32_0_2021_12_03">share v0.32.0 (2021-12-03)</h2>
+<h2 id="_share_v0_32_0_2021_12_03"><a class="anchor" href="#_share_v0_32_0_2021_12_03"></a><a class="link" href="#_share_v0_32_0_2021_12_03">share v0.32.0 (2021-12-03)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>This release bring major changes and enhancements to package dns and math/big.</p>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_2">Breaking changes</h3>
+<h3 id="_breaking_changes_2"><a class="anchor" href="#_breaking_changes_2"></a><a class="link" href="#_breaking_changes_2">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1283,7 +1487,7 @@ server.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_3">New features</h3>
+<h3 id="_new_features_2"><a class="anchor" href="#_new_features_2"></a><a class="link" href="#_new_features_2">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1334,7 +1538,7 @@ Other string beside "none" will be considered as path to socket.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_2">Bug fixes</h3>
+<h3 id="_bug_fixes_1"><a class="anchor" href="#_bug_fixes_1"></a><a class="link" href="#_bug_fixes_1">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1371,7 +1575,7 @@ zero value and return nil immediately.
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_3">Enhancements</h3>
+<h3 id="_enhancements_2"><a class="anchor" href="#_enhancements_2"></a><a class="link" href="#_enhancements_2">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1436,10 +1640,10 @@ fixed to 4096, even on UDP.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_31_0_2021_11_04">share v0.31.0 (2021-11-04)</h2>
+<h2 id="_share_v0_31_0_2021_11_04"><a class="anchor" href="#_share_v0_31_0_2021_11_04"></a><a class="link" href="#_share_v0_31_0_2021_11_04">share v0.31.0 (2021-11-04)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_3">Breaking changes</h3>
+<h3 id="_breaking_changes_3"><a class="anchor" href="#_breaking_changes_3"></a><a class="link" href="#_breaking_changes_3">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1584,7 +1788,7 @@ re-adding the same file every time we run local tests.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_4">New features</h3>
+<h3 id="_new_features_3"><a class="anchor" href="#_new_features_3"></a><a class="link" href="#_new_features_3">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1656,7 +1860,7 @@ EHLO/HELO buffer.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_3">Bug fixes</h3>
+<h3 id="_bug_fixes_2"><a class="anchor" href="#_bug_fixes_2"></a><a class="link" href="#_bug_fixes_2">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1723,7 +1927,7 @@ result on module that use it.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_2">Chores</h3>
+<h3 id="_chores_2"><a class="anchor" href="#_chores_2"></a><a class="link" href="#_chores_2">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1756,10 +1960,10 @@ Usually used only for debugging.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_30_0_2021_10_04">share v0.30.0 (2021-10-04)</h2>
+<h2 id="_share_v0_30_0_2021_10_04"><a class="anchor" href="#_share_v0_30_0_2021_10_04"></a><a class="link" href="#_share_v0_30_0_2021_10_04">share v0.30.0 (2021-10-04)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_4">Breaking changes</h3>
+<h3 id="_breaking_changes_4"><a class="anchor" href="#_breaking_changes_4"></a><a class="link" href="#_breaking_changes_4">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1784,7 +1988,7 @@ file content.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_5">New features</h3>
+<h3 id="_new_features_4"><a class="anchor" href="#_new_features_4"></a><a class="link" href="#_new_features_4">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1831,7 +2035,7 @@ also be removed from text.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_4">Bug fixes</h3>
+<h3 id="_bug_fixes_3"><a class="anchor" href="#_bug_fixes_3"></a><a class="link" href="#_bug_fixes_3">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -1939,7 +2143,7 @@ directory and return immediately.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_4">Enhancements</h3>
+<h3 id="_enhancements_3"><a class="anchor" href="#_enhancements_3"></a><a class="link" href="#_enhancements_3">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2002,7 +2206,7 @@ fmt.Sprintf.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_3">Chores</h3>
+<h3 id="_chores_3"><a class="anchor" href="#_chores_3"></a><a class="link" href="#_chores_3">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2017,10 +2221,10 @@ fmt.Sprintf.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_29_2_2021_09_06">share v0.29.2 (2021-09-06)</h2>
+<h2 id="_share_v0_29_2_2021_09_06"><a class="anchor" href="#_share_v0_29_2_2021_09_06"></a><a class="link" href="#_share_v0_29_2_2021_09_06">share v0.29.2 (2021-09-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_bug_fixes_5">Bug fixes</h3>
+<h3 id="_bug_fixes_4"><a class="anchor" href="#_bug_fixes_4"></a><a class="link" href="#_bug_fixes_4">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2155,7 +2359,7 @@ is escaped using backslash.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_5">Enhancements</h3>
+<h3 id="_enhancements_4"><a class="anchor" href="#_enhancements_4"></a><a class="link" href="#_enhancements_4">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2227,7 +2431,7 @@ error for future remote execution.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_4">Chores</h3>
+<h3 id="_chores_4"><a class="anchor" href="#_chores_4"></a><a class="link" href="#_chores_4">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2274,7 +2478,7 @@ cases.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_29_1_2021_08_06">share v0.29.1 (2021-08-06)</h2>
+<h2 id="_share_v0_29_1_2021_08_06"><a class="anchor" href="#_share_v0_29_1_2021_08_06"></a><a class="link" href="#_share_v0_29_1_2021_08_06">share v0.29.1 (2021-08-06)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Revert the "lib/errors: return the internal error only if its not nil on
@@ -2290,10 +2494,10 @@ method.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_29_0_2021_08_06">share v0.29.0 (2021-08-06)</h2>
+<h2 id="_share_v0_29_0_2021_08_06"><a class="anchor" href="#_share_v0_29_0_2021_08_06"></a><a class="link" href="#_share_v0_29_0_2021_08_06">share v0.29.0 (2021-08-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_feature">New feature</h3>
+<h3 id="_new_feature"><a class="anchor" href="#_new_feature"></a><a class="link" href="#_new_feature">New feature</a></h3>
<div class="paragraph">
<p>ssh/sftp: new package that implement SSH File Transport Protocol v3</p>
</div>
@@ -2303,7 +2507,7 @@ implementing "sftp" subsystem using the ssh.Client connection.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_5">Breaking changes</h3>
+<h3 id="_breaking_changes_5"><a class="anchor" href="#_breaking_changes_5"></a><a class="link" href="#_breaking_changes_5">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2336,7 +2540,7 @@ implementing "sftp" subsystem using the ssh.Client connection.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_6">Enhancements</h3>
+<h3 id="_enhancements_5"><a class="anchor" href="#_enhancements_5"></a><a class="link" href="#_enhancements_5">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2412,7 +2616,7 @@ contains index.html and if still not exist we return nil.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fix">Bug fix</h3>
+<h3 id="_bug_fix"><a class="anchor" href="#_bug_fix"></a><a class="link" href="#_bug_fix">Bug fix</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2428,10 +2632,10 @@ of e itself.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_28_0_2021_07_06">share v0.28.0 (2021-07-06)</h2>
+<h2 id="_share_v0_28_0_2021_07_06"><a class="anchor" href="#_share_v0_28_0_2021_07_06"></a><a class="link" href="#_share_v0_28_0_2021_07_06">share v0.28.0 (2021-07-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_6">Breaking changes</h3>
+<h3 id="_breaking_changes_6"><a class="anchor" href="#_breaking_changes_6"></a><a class="link" href="#_breaking_changes_6">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2477,7 +2681,7 @@ duplicate Memfs, so this field is removed in favor of Options.Memfs.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_7">Enhancements</h3>
+<h3 id="_enhancements_6"><a class="anchor" href="#_enhancements_6"></a><a class="link" href="#_enhancements_6">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2532,14 +2736,14 @@ field, while the required header value stored on their respective fields.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_27_0_2021_06_05">share v0.27.0 (2021-06-05)</h2>
+<h2 id="_share_v0_27_0_2021_06_05"><a class="anchor" href="#_share_v0_27_0_2021_06_05"></a><a class="link" href="#_share_v0_27_0_2021_06_05">share v0.27.0 (2021-06-05)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>This release bring better functionalities, usability, and fixes for <code>xmlrpc</code>
package.</p>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_7">Breaking changes</h3>
+<h3 id="_breaking_changes_7"><a class="anchor" href="#_breaking_changes_7"></a><a class="link" href="#_breaking_changes_7">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2614,7 +2818,7 @@ ArrayValues</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_6">New features</h3>
+<h3 id="_new_features_5"><a class="anchor" href="#_new_features_5"></a><a class="link" href="#_new_features_5">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2646,7 +2850,7 @@ trace returned by debug.Stack.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_8">Enhancements</h3>
+<h3 id="_enhancements_7"><a class="anchor" href="#_enhancements_7"></a><a class="link" href="#_enhancements_7">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2660,7 +2864,7 @@ type of HTTP request to match with "text/xml".</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_6">Bug fixes</h3>
+<h3 id="_bug_fixes_5"><a class="anchor" href="#_bug_fixes_5"></a><a class="link" href="#_bug_fixes_5">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2698,10 +2902,10 @@ JavaScript file is "application/javascript".</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_26_0_2021_05_03">share v0.26.0 (2021-05-03)</h2>
+<h2 id="_share_v0_26_0_2021_05_03"><a class="anchor" href="#_share_v0_26_0_2021_05_03"></a><a class="link" href="#_share_v0_26_0_2021_05_03">share v0.26.0 (2021-05-03)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features_7">New features</h3>
+<h3 id="_new_features_6"><a class="anchor" href="#_new_features_6"></a><a class="link" href="#_new_features_6">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2741,7 +2945,7 @@ values using NewInt().</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_9">Enhancements</h3>
+<h3 id="_enhancements_8"><a class="anchor" href="#_enhancements_8"></a><a class="link" href="#_enhancements_8">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2782,7 +2986,7 @@ of scp command. This is to prevent warning message on user side.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_5">Chores</h3>
+<h3 id="_chores_5"><a class="anchor" href="#_chores_5"></a><a class="link" href="#_chores_5">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2806,7 +3010,7 @@ LittleEndian, and input value.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_25_1_2021_04_06">share v0.25.1 (2021-04-06)</h2>
+<h2 id="_share_v0_25_1_2021_04_06"><a class="anchor" href="#_share_v0_25_1_2021_04_06"></a><a class="link" href="#_share_v0_25_1_2021_04_06">share v0.25.1 (2021-04-06)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Set the minimum Go version to 1.16</p>
@@ -2823,10 +3027,10 @@ by setting the minimum Go version to 1.16.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_25_0_2021_04_06">share v0.25.0 (2021-04-06)</h2>
+<h2 id="_share_v0_25_0_2021_04_06"><a class="anchor" href="#_share_v0_25_0_2021_04_06"></a><a class="link" href="#_share_v0_25_0_2021_04_06">share v0.25.0 (2021-04-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_8">Breaking changes</h3>
+<h3 id="_breaking_changes_8"><a class="anchor" href="#_breaking_changes_8"></a><a class="link" href="#_breaking_changes_8">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2889,7 +3093,7 @@ become redundant.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_8">New features</h3>
+<h3 id="_new_features_7"><a class="anchor" href="#_new_features_7"></a><a class="link" href="#_new_features_7">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2968,7 +3172,7 @@ NewClient to make it works.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_10">Enhancements</h3>
+<h3 id="_enhancements_9"><a class="anchor" href="#_enhancements_9"></a><a class="link" href="#_enhancements_9">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -2984,10 +3188,10 @@ request and response to standard output.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_24_0_2021_03_06">share v0.24.0 (2021-03-06)</h2>
+<h2 id="_share_v0_24_0_2021_03_06"><a class="anchor" href="#_share_v0_24_0_2021_03_06"></a><a class="link" href="#_share_v0_24_0_2021_03_06">share v0.24.0 (2021-03-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_9">Breaking changes</h3>
+<h3 id="_breaking_changes_9"><a class="anchor" href="#_breaking_changes_9"></a><a class="link" href="#_breaking_changes_9">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3044,7 +3248,7 @@ EndpointRequest.Error field.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_9">New features</h3>
+<h3 id="_new_features_8"><a class="anchor" href="#_new_features_8"></a><a class="link" href="#_new_features_8">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3190,7 +3394,7 @@ field = value</pre>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_11">Enhancements</h3>
+<h3 id="_enhancements_10"><a class="anchor" href="#_enhancements_10"></a><a class="link" href="#_enhancements_10">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3212,7 +3416,7 @@ The Count field contains the total number of records.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_7">Bug fixes</h3>
+<h3 id="_bug_fixes_6"><a class="anchor" href="#_bug_fixes_6"></a><a class="link" href="#_bug_fixes_6">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3227,7 +3431,7 @@ The Count field contains the total number of records.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_23_0_2021_02_05">share v0.23.0 (2021-02-05)</h2>
+<h2 id="_share_v0_23_0_2021_02_05"><a class="anchor" href="#_share_v0_23_0_2021_02_05"></a><a class="link" href="#_share_v0_23_0_2021_02_05">share v0.23.0 (2021-02-05)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>This release bring major refactoring to package memfs to allow embedding two
@@ -3237,7 +3441,7 @@ or more directories in single package.</p>
<p>The minimum Go version is increased to 1.14.</p>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_10">Breaking changes</h3>
+<h3 id="_breaking_changes_10"><a class="anchor" href="#_breaking_changes_10"></a><a class="link" href="#_breaking_changes_10">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3333,7 +3537,7 @@ predictable.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_10">New features</h3>
+<h3 id="_new_features_9"><a class="anchor" href="#_new_features_9"></a><a class="link" href="#_new_features_9">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3410,7 +3614,7 @@ value from fraction.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_12">Enhancements</h3>
+<h3 id="_enhancements_11"><a class="anchor" href="#_enhancements_11"></a><a class="link" href="#_enhancements_11">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3435,7 +3639,7 @@ most of its fields, so consumer can access it.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_8">Bug fixes</h3>
+<h3 id="_bug_fixes_7"><a class="anchor" href="#_bug_fixes_7"></a><a class="link" href="#_bug_fixes_7">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3465,10 +3669,10 @@ file.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_22_0_2021_01_06">share v0.22.0 (2021-01-06)</h2>
+<h2 id="_share_v0_22_0_2021_01_06"><a class="anchor" href="#_share_v0_22_0_2021_01_06"></a><a class="link" href="#_share_v0_22_0_2021_01_06">share v0.22.0 (2021-01-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_11">Breaking changes</h3>
+<h3 id="_breaking_changes_11"><a class="anchor" href="#_breaking_changes_11"></a><a class="link" href="#_breaking_changes_11">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3481,7 +3685,7 @@ file.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_11">New features</h3>
+<h3 id="_new_features_10"><a class="anchor" href="#_new_features_10"></a><a class="link" href="#_new_features_10">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3498,7 +3702,7 @@ secret key.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_13">Enhancements</h3>
+<h3 id="_enhancements_12"><a class="anchor" href="#_enhancements_12"></a><a class="link" href="#_enhancements_12">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3518,10 +3722,10 @@ standard output.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_21_0_2020_12_06">share v0.21.0 (2020-12-06)</h2>
+<h2 id="_share_v0_21_0_2020_12_06"><a class="anchor" href="#_share_v0_21_0_2020_12_06"></a><a class="link" href="#_share_v0_21_0_2020_12_06">share v0.21.0 (2020-12-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_12">Breaking changes</h3>
+<h3 id="_breaking_changes_12"><a class="anchor" href="#_breaking_changes_12"></a><a class="link" href="#_breaking_changes_12">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3535,7 +3739,7 @@ which describe which field have unmatched value.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_12">New features</h3>
+<h3 id="_new_features_11"><a class="anchor" href="#_new_features_11"></a><a class="link" href="#_new_features_11">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3559,7 +3763,7 @@ RFC 6238.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_9">Bug fixes</h3>
+<h3 id="_bug_fixes_8"><a class="anchor" href="#_bug_fixes_8"></a><a class="link" href="#_bug_fixes_8">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3582,7 +3786,7 @@ method always return "b, 0" on the last line.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_14">Enhancements</h3>
+<h3 id="_enhancements_13"><a class="anchor" href="#_enhancements_13"></a><a class="link" href="#_enhancements_13">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3611,7 +3815,7 @@ paremeter) or valid IP address.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_6">Chores</h3>
+<h3 id="_chores_6"><a class="anchor" href="#_chores_6"></a><a class="link" href="#_chores_6">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3627,10 +3831,10 @@ tools.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_20_1_2020_11_08">share v0.20.1 (2020-11-08)</h2>
+<h2 id="_share_v0_20_1_2020_11_08"><a class="anchor" href="#_share_v0_20_1_2020_11_08"></a><a class="link" href="#_share_v0_20_1_2020_11_08">share v0.20.1 (2020-11-08)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_bug_fixes_10">Bug fixes</h3>
+<h3 id="_bug_fixes_9"><a class="anchor" href="#_bug_fixes_9"></a><a class="link" href="#_bug_fixes_9">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3648,7 +3852,7 @@ not look like a TLS handshake".</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_15">Enhancements</h3>
+<h3 id="_enhancements_14"><a class="anchor" href="#_enhancements_14"></a><a class="link" href="#_enhancements_14">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3674,7 +3878,7 @@ position, and then call Close to reset the internal state back to zero.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_chores_7">Chores</h3>
+<h3 id="_chores_7"><a class="anchor" href="#_chores_7"></a><a class="link" href="#_chores_7">Chores</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3686,10 +3890,10 @@ position, and then call Close to reset the internal state back to zero.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_20_0_2020_10_05">share v0.20.0 (2020-10-05)</h2>
+<h2 id="_share_v0_20_0_2020_10_05"><a class="anchor" href="#_share_v0_20_0_2020_10_05"></a><a class="link" href="#_share_v0_20_0_2020_10_05">share v0.20.0 (2020-10-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features_13">New features</h3>
+<h3 id="_new_features_12"><a class="anchor" href="#_new_features_12"></a><a class="link" href="#_new_features_12">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3707,7 +3911,7 @@ handled and filled automatically.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_16">Enhancements</h3>
+<h3 id="_enhancements_15"><a class="anchor" href="#_enhancements_15"></a><a class="link" href="#_enhancements_15">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3728,10 +3932,10 @@ is forwarded to DNS server, so this changes accommodated it.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_19_0_2020_09_08">share v0.19.0 (2020-09-08)</h2>
+<h2 id="_share_v0_19_0_2020_09_08"><a class="anchor" href="#_share_v0_19_0_2020_09_08"></a><a class="link" href="#_share_v0_19_0_2020_09_08">share v0.19.0 (2020-09-08)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_13">Breaking changes</h3>
+<h3 id="_breaking_changes_13"><a class="anchor" href="#_breaking_changes_13"></a><a class="link" href="#_breaking_changes_13">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3775,7 +3979,7 @@ Messages.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_14">New features</h3>
+<h3 id="_new_features_13"><a class="anchor" href="#_new_features_13"></a><a class="link" href="#_new_features_13">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3817,7 +4021,7 @@ previously) and new path and handler for retrieving server status.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_11">Bug fixes</h3>
+<h3 id="_bug_fixes_10"><a class="anchor" href="#_bug_fixes_10"></a><a class="link" href="#_bug_fixes_10">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3838,10 +4042,10 @@ previously) and new path and handler for retrieving server status.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_18_0_2020_08_06">share v0.18.0 (2020-08-06)</h2>
+<h2 id="_share_v0_18_0_2020_08_06"><a class="anchor" href="#_share_v0_18_0_2020_08_06"></a><a class="link" href="#_share_v0_18_0_2020_08_06">share v0.18.0 (2020-08-06)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_14">Breaking changes</h3>
+<h3 id="_breaking_changes_14"><a class="anchor" href="#_breaking_changes_14"></a><a class="link" href="#_breaking_changes_14">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3873,7 +4077,7 @@ if the library always set the response type to None.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_12">Bug fixes</h3>
+<h3 id="_bug_fixes_11"><a class="anchor" href="#_bug_fixes_11"></a><a class="link" href="#_bug_fixes_11">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3883,7 +4087,7 @@ if the library always set the response type to None.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_17">Enhancements</h3>
+<h3 id="_enhancements_16"><a class="anchor" href="#_enhancements_16"></a><a class="link" href="#_enhancements_16">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3910,10 +4114,10 @@ if the library always set the response type to None.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_17_0_2020_07_05">share v0.17.0 (2020-07-05)</h2>
+<h2 id="_share_v0_17_0_2020_07_05"><a class="anchor" href="#_share_v0_17_0_2020_07_05"></a><a class="link" href="#_share_v0_17_0_2020_07_05">share v0.17.0 (2020-07-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_15">Breaking changes</h3>
+<h3 id="_breaking_changes_15"><a class="anchor" href="#_breaking_changes_15"></a><a class="link" href="#_breaking_changes_15">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3929,7 +4133,7 @@ if the library always set the response type to None.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_13">Bug fixes</h3>
+<h3 id="_bug_fixes_12"><a class="anchor" href="#_bug_fixes_12"></a><a class="link" href="#_bug_fixes_12">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3945,7 +4149,7 @@ if the library always set the response type to None.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_18">Enhancements</h3>
+<h3 id="_enhancements_17"><a class="anchor" href="#_enhancements_17"></a><a class="link" href="#_enhancements_17">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -3972,10 +4176,10 @@ if the library always set the response type to None.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_16_0_2020_06_05">share v0.16.0 (2020-06-05)</h2>
+<h2 id="_share_v0_16_0_2020_06_05"><a class="anchor" href="#_share_v0_16_0_2020_06_05"></a><a class="link" href="#_share_v0_16_0_2020_06_05">share v0.16.0 (2020-06-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_16">Breaking changes</h3>
+<h3 id="_breaking_changes_16"><a class="anchor" href="#_breaking_changes_16"></a><a class="link" href="#_breaking_changes_16">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4026,7 +4230,7 @@ become unneeded, so we remove them.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_14">Bug fixes</h3>
+<h3 id="_bug_fixes_13"><a class="anchor" href="#_bug_fixes_13"></a><a class="link" href="#_bug_fixes_13">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4036,7 +4240,7 @@ become unneeded, so we remove them.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_15">New features</h3>
+<h3 id="_new_features_14"><a class="anchor" href="#_new_features_14"></a><a class="link" href="#_new_features_14">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4095,7 +4299,7 @@ file name that has been executed and the timestamp.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_19">Enhancements</h3>
+<h3 id="_enhancements_18"><a class="anchor" href="#_enhancements_18"></a><a class="link" href="#_enhancements_18">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4147,10 +4351,10 @@ fis, err := root.Readdir(0)</pre>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_15_0_2020_05_04">share v0.15.0 (2020-05-04)</h2>
+<h2 id="_share_v0_15_0_2020_05_04"><a class="anchor" href="#_share_v0_15_0_2020_05_04"></a><a class="link" href="#_share_v0_15_0_2020_05_04">share v0.15.0 (2020-05-04)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_17">Breaking changes</h3>
+<h3 id="_breaking_changes_17"><a class="anchor" href="#_breaking_changes_17"></a><a class="link" href="#_breaking_changes_17">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4163,7 +4367,7 @@ fis, err := root.Readdir(0)</pre>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_16">New features</h3>
+<h3 id="_new_features_15"><a class="anchor" href="#_new_features_15"></a><a class="link" href="#_new_features_15">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4193,7 +4397,7 @@ to iterate each node in the tree from top to bottom.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_20">Enhancements</h3>
+<h3 id="_enhancements_19"><a class="anchor" href="#_enhancements_19"></a><a class="link" href="#_enhancements_19">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4215,7 +4419,7 @@ to iterate each node in the tree from top to bottom.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_15">Bug fixes</h3>
+<h3 id="_bug_fixes_14"><a class="anchor" href="#_bug_fixes_14"></a><a class="link" href="#_bug_fixes_14">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4227,10 +4431,10 @@ to iterate each node in the tree from top to bottom.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_14_0_2020_04_03">share v0.14.0 (2020-04-03)</h2>
+<h2 id="_share_v0_14_0_2020_04_03"><a class="anchor" href="#_share_v0_14_0_2020_04_03"></a><a class="link" href="#_share_v0_14_0_2020_04_03">share v0.14.0 (2020-04-03)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_18">Breaking changes</h3>
+<h3 id="_breaking_changes_18"><a class="anchor" href="#_breaking_changes_18"></a><a class="link" href="#_breaking_changes_18">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4249,7 +4453,7 @@ will be handled automatically based on value on field Method.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_17">New features</h3>
+<h3 id="_new_features_16"><a class="anchor" href="#_new_features_16"></a><a class="link" href="#_new_features_16">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4285,7 +4489,7 @@ single space ' '.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_21">Enhancements</h3>
+<h3 id="_enhancements_20"><a class="anchor" href="#_enhancements_20"></a><a class="link" href="#_enhancements_20">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4315,7 +4519,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_16">Bug fixes</h3>
+<h3 id="_bug_fixes_15"><a class="anchor" href="#_bug_fixes_15"></a><a class="link" href="#_bug_fixes_15">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4327,16 +4531,16 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_13_0_2020_03_11">share v0.13.0 (2020-03-11)</h2>
+<h2 id="_share_v0_13_0_2020_03_11"><a class="anchor" href="#_share_v0_13_0_2020_03_11"></a><a class="link" href="#_share_v0_13_0_2020_03_11">share v0.13.0 (2020-03-11)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_19">Breaking changes</h3>
+<h3 id="_breaking_changes_19"><a class="anchor" href="#_breaking_changes_19"></a><a class="link" href="#_breaking_changes_19">Breaking changes</a></h3>
<div class="paragraph">
<p>Set the minimum Go version to 1.13.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_18">New features</h3>
+<h3 id="_new_features_17"><a class="anchor" href="#_new_features_17"></a><a class="link" href="#_new_features_17">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4349,7 +4553,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_22">Enhancements</h3>
+<h3 id="_enhancements_21"><a class="anchor" href="#_enhancements_21"></a><a class="link" href="#_enhancements_21">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4371,7 +4575,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_17">Bug Fixes</h3>
+<h3 id="_bug_fixes_16"><a class="anchor" href="#_bug_fixes_16"></a><a class="link" href="#_bug_fixes_16">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4386,10 +4590,10 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_12_0_2020_02_13">share v0.12.0 (2020-02-13)</h2>
+<h2 id="_share_v0_12_0_2020_02_13"><a class="anchor" href="#_share_v0_12_0_2020_02_13"></a><a class="link" href="#_share_v0_12_0_2020_02_13">share v0.12.0 (2020-02-13)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_20">Breaking changes</h3>
+<h3 id="_breaking_changes_20"><a class="anchor" href="#_breaking_changes_20"></a><a class="link" href="#_breaking_changes_20">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4408,7 +4612,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_19">New features</h3>
+<h3 id="_new_features_18"><a class="anchor" href="#_new_features_18"></a><a class="link" href="#_new_features_18">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4424,7 +4628,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_23">Enhancements</h3>
+<h3 id="_enhancements_22"><a class="anchor" href="#_enhancements_22"></a><a class="link" href="#_enhancements_22">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4434,7 +4638,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_18">Bug fixes</h3>
+<h3 id="_bug_fixes_17"><a class="anchor" href="#_bug_fixes_17"></a><a class="link" href="#_bug_fixes_17">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4446,10 +4650,10 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_11_0_2019_12_26">share v0.11.0 (2019-12-26)</h2>
+<h2 id="_share_v0_11_0_2019_12_26"><a class="anchor" href="#_share_v0_11_0_2019_12_26"></a><a class="link" href="#_share_v0_11_0_2019_12_26">share v0.11.0 (2019-12-26)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_21">Breaking changes</h3>
+<h3 id="_breaking_changes_21"><a class="anchor" href="#_breaking_changes_21"></a><a class="link" href="#_breaking_changes_21">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4459,7 +4663,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_20">New features</h3>
+<h3 id="_new_features_19"><a class="anchor" href="#_new_features_19"></a><a class="link" href="#_new_features_19">New features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4478,7 +4682,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_24">Enhancements</h3>
+<h3 id="_enhancements_23"><a class="anchor" href="#_enhancements_23"></a><a class="link" href="#_enhancements_23">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4494,7 +4698,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_19">Bug fixes</h3>
+<h3 id="_bug_fixes_18"><a class="anchor" href="#_bug_fixes_18"></a><a class="link" href="#_bug_fixes_18">Bug fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4506,10 +4710,10 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_10_2_2019_12_07">share v0.10.2 (2019-12-07)</h2>
+<h2 id="_share_v0_10_2_2019_12_07"><a class="anchor" href="#_share_v0_10_2_2019_12_07"></a><a class="link" href="#_share_v0_10_2_2019_12_07">share v0.10.2 (2019-12-07)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_bug_fixes_20">Bug Fixes</h3>
+<h3 id="_bug_fixes_19"><a class="anchor" href="#_bug_fixes_19"></a><a class="link" href="#_bug_fixes_19">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4524,10 +4728,10 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_10_1_2019_12_05">share v0.10.1 (2019-12-05)</h2>
+<h2 id="_share_v0_10_1_2019_12_05"><a class="anchor" href="#_share_v0_10_1_2019_12_05"></a><a class="link" href="#_share_v0_10_1_2019_12_05">share v0.10.1 (2019-12-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_bug_fixes_21">Bug Fixes</h3>
+<h3 id="_bug_fixes_20"><a class="anchor" href="#_bug_fixes_20"></a><a class="link" href="#_bug_fixes_20">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4576,7 +4780,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_25">Enhancements</h3>
+<h3 id="_enhancements_24"><a class="anchor" href="#_enhancements_24"></a><a class="link" href="#_enhancements_24">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4618,10 +4822,10 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_10_0_2019_11_05">share v0.10.0 (2019-11-05)</h2>
+<h2 id="_share_v0_10_0_2019_11_05"><a class="anchor" href="#_share_v0_10_0_2019_11_05"></a><a class="link" href="#_share_v0_10_0_2019_11_05">share v0.10.0 (2019-11-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features_21">New Features</h3>
+<h3 id="_new_features_20"><a class="anchor" href="#_new_features_20"></a><a class="link" href="#_new_features_20">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4637,7 +4841,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_22">Breaking Changes</h3>
+<h3 id="_breaking_changes_22"><a class="anchor" href="#_breaking_changes_22"></a><a class="link" href="#_breaking_changes_22">Breaking Changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4650,7 +4854,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_26">Enhancements</h3>
+<h3 id="_enhancements_25"><a class="anchor" href="#_enhancements_25"></a><a class="link" href="#_enhancements_25">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4672,7 +4876,7 @@ word.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_22">Bug Fixes</h3>
+<h3 id="_bug_fixes_21"><a class="anchor" href="#_bug_fixes_21"></a><a class="link" href="#_bug_fixes_21">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4699,10 +4903,10 @@ word.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_9_0_2019_10_08">share v0.9.0 (2019-10-08)</h2>
+<h2 id="_share_v0_9_0_2019_10_08"><a class="anchor" href="#_share_v0_9_0_2019_10_08"></a><a class="link" href="#_share_v0_9_0_2019_10_08">share v0.9.0 (2019-10-08)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features_22">New Features</h3>
+<h3 id="_new_features_21"><a class="anchor" href="#_new_features_21"></a><a class="link" href="#_new_features_21">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4745,7 +4949,7 @@ http.Request.Form using Get method.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_23">Breaking Changes</h3>
+<h3 id="_breaking_changes_23"><a class="anchor" href="#_breaking_changes_23"></a><a class="link" href="#_breaking_changes_23">Breaking Changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4776,7 +4980,7 @@ to be an empty string, so "var" value is equal to "".</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_23">Bug Fixes</h3>
+<h3 id="_bug_fixes_22"><a class="anchor" href="#_bug_fixes_22"></a><a class="link" href="#_bug_fixes_22">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4793,7 +4997,7 @@ no DNS queries forwarded to parent server.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_27">Enhancements</h3>
+<h3 id="_enhancements_26"><a class="anchor" href="#_enhancements_26"></a><a class="link" href="#_enhancements_26">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4815,10 +5019,10 @@ to Search the content.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_8_2_2019_09_05">share v0.8.2 (2019-09-05)</h2>
+<h2 id="_share_v0_8_2_2019_09_05"><a class="anchor" href="#_share_v0_8_2_2019_09_05"></a><a class="link" href="#_share_v0_8_2_2019_09_05">share v0.8.2 (2019-09-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_enhancements_28">Enhancements</h3>
+<h3 id="_enhancements_27"><a class="anchor" href="#_enhancements_27"></a><a class="link" href="#_enhancements_27">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4865,10 +5069,10 @@ in directory.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_8_1_2019_08_05">share v0.8.1 (2019-08-05)</h2>
+<h2 id="_share_v0_8_1_2019_08_05"><a class="anchor" href="#_share_v0_8_1_2019_08_05"></a><a class="link" href="#_share_v0_8_1_2019_08_05">share v0.8.1 (2019-08-05)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_enhancements_29">Enhancements</h3>
+<h3 id="_enhancements_28"><a class="anchor" href="#_enhancements_28"></a><a class="link" href="#_enhancements_28">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4903,10 +5107,10 @@ file, we want that file to be excluded from .go static source.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_8_0_2019_07_09">share v0.8.0 (2019-07-09)</h2>
+<h2 id="_share_v0_8_0_2019_07_09"><a class="anchor" href="#_share_v0_8_0_2019_07_09"></a><a class="link" href="#_share_v0_8_0_2019_07_09">share v0.8.0 (2019-07-09)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_breaking_changes_24">Breaking changes</h3>
+<h3 id="_breaking_changes_24"><a class="anchor" href="#_breaking_changes_24"></a><a class="link" href="#_breaking_changes_24">Breaking changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4917,7 +5121,7 @@ package to <code>ascii</code> package.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_23">New Features</h3>
+<h3 id="_new_features_22"><a class="anchor" href="#_new_features_22"></a><a class="link" href="#_new_features_22">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4927,7 +5131,7 @@ package to <code>ascii</code> package.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_30">Enhancements</h3>
+<h3 id="_enhancements_29"><a class="anchor" href="#_enhancements_29"></a><a class="link" href="#_enhancements_29">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4945,14 +5149,14 @@ package to <code>ascii</code> package.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_7_0_2019_06_14">share v0.7.0 (2019-06-14)</h2>
+<h2 id="_share_v0_7_0_2019_06_14"><a class="anchor" href="#_share_v0_7_0_2019_06_14"></a><a class="link" href="#_share_v0_7_0_2019_06_14">share v0.7.0 (2019-06-14)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>This release bring major refactoring on <code>ini</code> package to provide a clean and
simple API.</p>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_25">Breaking Changes</h3>
+<h3 id="_breaking_changes_25"><a class="anchor" href="#_breaking_changes_25"></a><a class="link" href="#_breaking_changes_25">Breaking Changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4965,7 +5169,7 @@ simple API.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_24">New Features</h3>
+<h3 id="_new_features_23"><a class="anchor" href="#_new_features_23"></a><a class="link" href="#_new_features_23">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -4978,7 +5182,7 @@ simple API.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_31">Enhancements</h3>
+<h3 id="_enhancements_30"><a class="anchor" href="#_enhancements_30"></a><a class="link" href="#_enhancements_30">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5036,7 +5240,7 @@ simple API.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_24">Bug Fixes</h3>
+<h3 id="_bug_fixes_23"><a class="anchor" href="#_bug_fixes_23"></a><a class="link" href="#_bug_fixes_23">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5054,7 +5258,7 @@ simple API.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_6_1_2019_05_11">share v0.6.1 (2019-05-11)</h2>
+<h2 id="_share_v0_6_1_2019_05_11"><a class="anchor" href="#_share_v0_6_1_2019_05_11"></a><a class="link" href="#_share_v0_6_1_2019_05_11">share v0.6.1 (2019-05-11)</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
@@ -5082,7 +5286,7 @@ simple API.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_6_0_2019_05_07">share v0.6.0 (2019-05-07)</h2>
+<h2 id="_share_v0_6_0_2019_05_07"><a class="anchor" href="#_share_v0_6_0_2019_05_07"></a><a class="link" href="#_share_v0_6_0_2019_05_07">share v0.6.0 (2019-05-07)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>This release bring major changes on dns package.
@@ -5090,7 +5294,7 @@ Most notable changes are adding caches and query forwarding (recursion), and
removing the server handler.</p>
</div>
<div class="sect2">
-<h3 id="_breaking_changes_26">Breaking Changes</h3>
+<h3 id="_breaking_changes_26"><a class="anchor" href="#_breaking_changes_26"></a><a class="link" href="#_breaking_changes_26">Breaking Changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5164,7 +5368,7 @@ removing the server handler.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_new_features_25">New Features</h3>
+<h3 id="_new_features_24"><a class="anchor" href="#_new_features_24"></a><a class="link" href="#_new_features_24">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5234,7 +5438,7 @@ removing the server handler.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_bug_fixes_25">Bug Fixes</h3>
+<h3 id="_bug_fixes_24"><a class="anchor" href="#_bug_fixes_24"></a><a class="link" href="#_bug_fixes_24">Bug Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5280,7 +5484,7 @@ removing the server handler.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_documentation">Documentation</h3>
+<h3 id="_documentation"><a class="anchor" href="#_documentation"></a><a class="link" href="#_documentation">Documentation</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5292,7 +5496,7 @@ removing the server handler.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_5_0_2019_04_02">share v0.5.0 (2019-04-02)</h2>
+<h2 id="_share_v0_5_0_2019_04_02"><a class="anchor" href="#_share_v0_5_0_2019_04_02"></a><a class="link" href="#_share_v0_5_0_2019_04_02">share v0.5.0 (2019-04-02)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>This minor release is dedicated for websocket package. Major refactoring on
@@ -5300,7 +5504,7 @@ server and client API to make it easy and extensible. The websocket is now
100% pass the autobahn testsuite (minus compression feature).</p>
</div>
<div class="sect2">
-<h3 id="_new_features_26">New Features</h3>
+<h3 id="_new_features_25"><a class="anchor" href="#_new_features_25"></a><a class="link" href="#_new_features_25">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5319,7 +5523,7 @@ server and client API to make it easy and extensible. The websocket is now
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_32">Enhancements</h3>
+<h3 id="_enhancements_31"><a class="anchor" href="#_enhancements_31"></a><a class="link" href="#_enhancements_31">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5364,10 +5568,10 @@ testsuite</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_4_0_2019_03_01">share v0.4.0 (2019-03-01)</h2>
+<h2 id="_share_v0_4_0_2019_03_01"><a class="anchor" href="#_share_v0_4_0_2019_03_01"></a><a class="link" href="#_share_v0_4_0_2019_03_01">share v0.4.0 (2019-03-01)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features_27">New Features</h3>
+<h3 id="_new_features_26"><a class="anchor" href="#_new_features_26"></a><a class="link" href="#_new_features_26">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5384,7 +5588,7 @@ testsuite</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_33">Enhancements</h3>
+<h3 id="_enhancements_32"><a class="anchor" href="#_enhancements_32"></a><a class="link" href="#_enhancements_32">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5530,7 +5734,7 @@ testsuite</p>
</div>
</div>
<div class="sect2">
-<h3 id="_fixes">Fixes</h3>
+<h3 id="_fixes"><a class="anchor" href="#_fixes"></a><a class="link" href="#_fixes">Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5548,10 +5752,10 @@ testsuite</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_3_0_2019_02_01">share v0.3.0 (2019-02-01)</h2>
+<h2 id="_share_v0_3_0_2019_02_01"><a class="anchor" href="#_share_v0_3_0_2019_02_01"></a><a class="link" href="#_share_v0_3_0_2019_02_01">share v0.3.0 (2019-02-01)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_features_changes">Features Changes</h3>
+<h3 id="_features_changes"><a class="anchor" href="#_features_changes"></a><a class="link" href="#_features_changes">Features Changes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5579,7 +5783,7 @@ testsuite</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_34">Enhancements</h3>
+<h3 id="_enhancements_33"><a class="anchor" href="#_enhancements_33"></a><a class="link" href="#_enhancements_33">Enhancements</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5604,7 +5808,7 @@ testsuite</p>
</div>
</div>
<div class="sect2">
-<h3 id="_fixes_1">Fixes</h3>
+<h3 id="_fixes_1"><a class="anchor" href="#_fixes_1"></a><a class="link" href="#_fixes_1">Fixes</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5616,10 +5820,10 @@ testsuite</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_2_0_2019_01_02">share v0.2.0 (2019-01-02)</h2>
+<h2 id="_share_v0_2_0_2019_01_02"><a class="anchor" href="#_share_v0_2_0_2019_01_02"></a><a class="link" href="#_share_v0_2_0_2019_01_02">share v0.2.0 (2019-01-02)</a></h2>
<div class="sectionbody">
<div class="sect2">
-<h3 id="_new_features_28">New Features</h3>
+<h3 id="_new_features_27"><a class="anchor" href="#_new_features_27"></a><a class="link" href="#_new_features_27">New Features</a></h3>
<div class="ulist">
<ul>
<li>
@@ -5633,7 +5837,7 @@ system and simplified routing handler.</p>
</div>
</div>
<div class="sect2">
-<h3 id="_enhancements_35">Enhancements</h3>
+<h3 id="_enhancements_34"><a class="anchor" href="#_enhancements_34"></a><a class="link" href="#_enhancements_34">Enhancements</a></h3>
<div class="paragraph">
<p>Fix warnings from linters.</p>
</div>
@@ -5641,7 +5845,7 @@ system and simplified routing handler.</p>
</div>
</div>
<div class="sect1">
-<h2 id="_share_v0_1_0_2018_11_29">share v0.1.0 (2018-11-29)</h2>
+<h2 id="_share_v0_1_0_2018_11_29"><a class="anchor" href="#_share_v0_1_0_2018_11_29"></a><a class="link" href="#_share_v0_1_0_2018_11_29">share v0.1.0 (2018-11-29)</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>The first release of <code>share</code> package contains one command line interface (CLI)
@@ -5671,7 +5875,7 @@ and several libraries.</p>
</div>
<div id="footer">
<div id="footer-text">
-Last updated 2022-02-08 00:30:44 +0700
+Last updated 2022-03-04 22:15:03 +0700
</div>
</div>
</div>