This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch deploy
in repository https://gitbox.apache.org/repos/asf/incubator-fury-site.git


The following commit(s) were added to refs/heads/deploy by this push:
     new 5b31f6a  deploy: 4e3a34c34b4a1238e126112e0529676160f100c1
5b31f6a is described below

commit 5b31f6ab7ae96aff29685250f510cef770800622
Author: chaokunyang <chaokuny...@users.noreply.github.com>
AuthorDate: Tue May 7 02:19:52 2024 +0000

    deploy: 4e3a34c34b4a1238e126112e0529676160f100c1
---
 404.html                                           |  4 ++--
 assets/js/b2f554cd.29ae74c4.js                     |  1 +
 assets/js/b2f554cd.867754a2.js                     |  1 -
 assets/js/cc296a15.580a3b9a.js                     |  1 -
 assets/js/cc296a15.b59ee70f.js                     |  1 +
 assets/js/f1aad19d.8fd0635e.js                     |  1 -
 assets/js/f1aad19d.da5e5582.js                     |  1 +
 assets/js/{main.e04cc605.js => main.9025f89e.js}   |  4 ++--
 ...js.LICENSE.txt => main.9025f89e.js.LICENSE.txt} |  0
 ...e~main.f673c4ba.js => runtime~main.36ff1eee.js} |  2 +-
 blog/archive/index.html                            |  4 ++--
 blog/atom.xml                                      | 22 +++++++++---------
 blog/fury/index.html                               | 26 +++++++++++-----------
 blog/fury_0_1_0_release/index.html                 |  4 ++--
 blog/fury_0_1_1_release/index.html                 |  4 ++--
 blog/fury_0_1_2_release/index.html                 |  4 ++--
 blog/fury_0_2_0_release/index.html                 |  4 ++--
 blog/fury_0_2_1_release/index.html                 |  4 ++--
 blog/fury_0_3_0_release/index.html                 |  4 ++--
 blog/fury_0_3_1_release/index.html                 |  4 ++--
 blog/fury_0_4_0_release/index.html                 |  4 ++--
 blog/fury_0_4_1_release/index.html                 |  4 ++--
 blog/fury_0_5_0_release/index.html                 |  4 ++--
 .../index.html                                     |  4 ++--
 blog/index.html                                    | 26 +++++++++++-----------
 blog/page/2/index.html                             |  4 ++--
 blog/rss.xml                                       | 22 +++++++++---------
 blog/tags/fury/index.html                          | 26 +++++++++++-----------
 blog/tags/fury/page/2/index.html                   |  4 ++--
 blog/tags/index.html                               |  4 ++--
 docs/guide/development/index.html                  |  4 ++--
 docs/guide/graalvm_guide/index.html                |  4 ++--
 docs/guide/java_object_graph_guide/index.html      |  4 ++--
 docs/guide/row_format_guide/index.html             |  4 ++--
 docs/guide/scala_guide/index.html                  |  4 ++--
 docs/guide/xlang_object_graph_guide/index.html     |  4 ++--
 docs/guide/xlang_type_mapping/index.html           |  4 ++--
 docs/introduction/benchmark/index.html             |  4 ++--
 docs/introduction/features/index.html              |  4 ++--
 docs/introduction/index.html                       |  4 ++--
 .../fury_java_serialization_spec/index.html        |  4 ++--
 docs/specification/fury_row_format_spec/index.html |  4 ++--
 .../fury_xlang_serialization_spec/index.html       |  4 ++--
 docs/start/install/index.html                      |  4 ++--
 docs/start/usage/index.html                        |  4 ++--
 download/index.html                                |  4 ++--
 index.html                                         |  4 ++--
 lunr-index-1715045432718.json                      |  1 -
 lunr-index-1715048363964.json                      |  1 +
 lunr-index.json                                    |  2 +-
 markdown-page/index.html                           |  4 ++--
 search-doc-1715045432718.json                      |  1 -
 search-doc-1715048363964.json                      |  1 +
 search-doc.json                                    |  2 +-
 54 files changed, 139 insertions(+), 139 deletions(-)

diff --git a/404.html b/404.html
index eaa3e44..1c73849 100644
--- a/404.html
+++ b/404.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Page Not Found | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/404.html";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docusaurus_tag" content="default"><meta data- [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/assets/js/b2f554cd.29ae74c4.js b/assets/js/b2f554cd.29ae74c4.js
new file mode 100644
index 0000000..380a5d8
--- /dev/null
+++ b/assets/js/b2f554cd.29ae74c4.js
@@ -0,0 +1 @@
+"use 
strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[1477],{10:a=>{a.exports=JSON.parse('{"blogPosts":[{"id":"fury","metadata":{"permalink":"/blog/fury","source":"@site/blog/2024-05-06-metastring-space-efficient_encoding_for_string.md","title":"Meta
 String: A 37.5% space efficient string encoding than UTF-8 in Fury 
serialization","description":"Background","date":"2024-05-06T00:00:00.000Z","formattedDate":"May
 6, 2024","tags":[{"label":"fury","permalink":"/blog [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.867754a2.js b/assets/js/b2f554cd.867754a2.js
deleted file mode 100644
index a3f1d0d..0000000
--- a/assets/js/b2f554cd.867754a2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use 
strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[1477],{10:a=>{a.exports=JSON.parse('{"blogPosts":[{"id":"fury","metadata":{"permalink":"/blog/fury","source":"@site/blog/2024-05-06-metastring-space-efficient_encoding_for_string.md","title":"Meta
 String: A 37.5% space efficient string encoding than UTF-8 in Fury 
serialization","description":"Background","date":"2024-05-06T00:00:00.000Z","formattedDate":"May
 6, 2024","tags":[{"label":"fury","permalink":"/blog [...]
\ No newline at end of file
diff --git a/assets/js/cc296a15.580a3b9a.js b/assets/js/cc296a15.580a3b9a.js
deleted file mode 100644
index b608b5f..0000000
--- a/assets/js/cc296a15.580a3b9a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use 
strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[5060],{3040:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>o});var
 s=t(5893),r=t(1151);const i={slug:"fury",title:"Meta String: A 37.5% space 
efficient string encoding than UTF-8 in Fury 
serialization",authors:["chaokunyang"],tags:["fury"]},c=void 
0,a={permalink:"/blog/fury",source:"@site/blog/2024-05-06-metastring-space-efficient_encoding_for_st
 [...]
\ No newline at end of file
diff --git a/assets/js/cc296a15.b59ee70f.js b/assets/js/cc296a15.b59ee70f.js
new file mode 100644
index 0000000..93a8867
--- /dev/null
+++ b/assets/js/cc296a15.b59ee70f.js
@@ -0,0 +1 @@
+"use 
strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[5060],{3040:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>o});var
 s=t(5893),r=t(1151);const i={slug:"fury",title:"Meta String: A 37.5% space 
efficient string encoding than UTF-8 in Fury 
serialization",authors:["chaokunyang"],tags:["fury"]},c=void 
0,a={permalink:"/blog/fury",source:"@site/blog/2024-05-06-metastring-space-efficient_encoding_for_st
 [...]
\ No newline at end of file
diff --git a/assets/js/f1aad19d.8fd0635e.js b/assets/js/f1aad19d.8fd0635e.js
deleted file mode 100644
index f52073e..0000000
--- a/assets/js/f1aad19d.8fd0635e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use 
strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[1648],{4020:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>o});var
 s=t(5893),r=t(1151);const i={slug:"fury",title:"Meta String: A 37.5% space 
efficient string encoding than UTF-8 in Fury 
serialization",authors:["chaokunyang"],tags:["fury"]},c=void 
0,a={permalink:"/blog/fury",source:"@site/blog/2024-05-06-metastring-space-efficient_encoding_for_st
 [...]
\ No newline at end of file
diff --git a/assets/js/f1aad19d.da5e5582.js b/assets/js/f1aad19d.da5e5582.js
new file mode 100644
index 0000000..e6868af
--- /dev/null
+++ b/assets/js/f1aad19d.da5e5582.js
@@ -0,0 +1 @@
+"use 
strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[1648],{4020:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>o});var
 s=t(5893),r=t(1151);const i={slug:"fury",title:"Meta String: A 37.5% space 
efficient string encoding than UTF-8 in Fury 
serialization",authors:["chaokunyang"],tags:["fury"]},c=void 
0,a={permalink:"/blog/fury",source:"@site/blog/2024-05-06-metastring-space-efficient_encoding_for_st
 [...]
\ No newline at end of file
diff --git a/assets/js/main.e04cc605.js b/assets/js/main.9025f89e.js
similarity index 99%
rename from assets/js/main.e04cc605.js
rename to assets/js/main.9025f89e.js
index 237c31c..71cb324 100644
--- a/assets/js/main.e04cc605.js
+++ b/assets/js/main.9025f89e.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.e04cc605.js.LICENSE.txt */
-(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[179],{723:(e,t,n)=>{"use
 strict";n.d(t,{Z:()=>f});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const 
i={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"061c795b":[()=>n.e(6624).then(n.bind(n,1582)),"@site/blog/2023-09-27-fury_0_1_2_release.md",1582],"092604a4":[()=>n.e(5088).then(n.bind(n,45)),"@site/docs/introduction/benchmark.md",45],"11627f87":[()=>n.e(9533).then(n.bi
 [...]
\ No newline at end of file
+/*! For license information please see main.9025f89e.js.LICENSE.txt */
+(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[179],{723:(e,t,n)=>{"use
 strict";n.d(t,{Z:()=>f});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const 
i={"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"061c795b":[()=>n.e(6624).then(n.bind(n,1582)),"@site/blog/2023-09-27-fury_0_1_2_release.md",1582],"092604a4":[()=>n.e(5088).then(n.bind(n,45)),"@site/docs/introduction/benchmark.md",45],"11627f87":[()=>n.e(9533).then(n.bi
 [...]
\ No newline at end of file
diff --git a/assets/js/main.e04cc605.js.LICENSE.txt 
b/assets/js/main.9025f89e.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.e04cc605.js.LICENSE.txt
rename to assets/js/main.9025f89e.js.LICENSE.txt
diff --git a/assets/js/runtime~main.f673c4ba.js 
b/assets/js/runtime~main.36ff1eee.js
similarity index 97%
rename from assets/js/runtime~main.f673c4ba.js
rename to assets/js/runtime~main.36ff1eee.js
index 7883fba..3310dd0 100644
--- a/assets/js/runtime~main.f673c4ba.js
+++ b/assets/js/runtime~main.36ff1eee.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,f,b,t={},d={};function r(e){var a=d[e];if(void 
0!==a)return a.exports;var c=d[e]={exports:{}};return 
t[e].call(c.exports,c,c.exports,r),c.exports}r.m=t,e=[],r.O=(a,c,f,b)=>{if(!c){var
 t=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var 
d=!0,o=0;o<c.length;o++)(!1&b||t>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(d=!1,b<t&&(t=b));if(d){e.splice(i--,1);var
 n=f();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
+(()=>{"use strict";var e,a,c,f,b,t={},d={};function r(e){var a=d[e];if(void 
0!==a)return a.exports;var c=d[e]={exports:{}};return 
t[e].call(c.exports,c,c.exports,r),c.exports}r.m=t,e=[],r.O=(a,c,f,b)=>{if(!c){var
 t=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var 
d=!0,o=0;o<c.length;o++)(!1&b||t>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(d=!1,b<t&&(t=b));if(d){e.splice(i--,1);var
 n=f();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 42d3484..7ba4649 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Archive | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog/archive";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docusaurus_tag" content="default"><meta data-rh= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/atom.xml b/blog/atom.xml
index 15a1417..9ebf89e 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -14,13 +14,13 @@
         <updated>2024-05-06T00:00:00.000Z</updated>
         <summary type="html"><![CDATA[Background]]></summary>
         <content type="html"><![CDATA[<h2 class="anchor 
anchorWithStickyNavbar_LWe7" id="background">Background<a 
href="https://fury.apache.org/blog/fury#background"; class="hash-link" 
aria-label="Direct link to Background" title="Direct link to 
Background">​</a></h2>
-<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 between processes.</p>
-<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we often encode such strings using utf-8 encodings. Such encoding
+<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 string between processes.</p>
+<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we encode such strings using utf-8 encodings. Such encoding
 will take one byte for every char, which is not space efficient actually.</p>
-<p>If we take a deeper look, we will found that most chars are <strong>lower 
chars plus <code>.</code>, <code>$</code> and <code>_</code></strong>, which 
can be expressed in a much
-smaller range <strong><code>0~32</code></strong>, and one byte can represent 
range <code>0~255</code>, the significant bits are wasted. And the cost is not 
ignorable, in a dynamic serialization
+<p>If we take a deeper look, we will found that most chars are 
<strong>lowercase chars,  <code>.</code>, <code>$</code> and 
<code>_</code></strong>, which can be expressed in a much
+smaller range <strong><code>0~32</code></strong>. But one byte can represent 
range <code>0~255</code>, the significant bits are wasted, and this cost is not 
ignorable. In a dynamic serialization
 framework, such meta will take considerable cost compared to real data.</p>
-<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong>. It will encode most chars using less bits instead of 
<code>8</code> bits in utf-8 encoding.</p>
+<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong> in Fury. It will encode most chars using 
<code>5</code> bits instead of <code>8</code> bits in utf-8 encoding, which can 
bring <strong>37.5% space cost savings</strong> compared to utf-8 encoding.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="meta-string-introduction">Meta String Introduction<a 
href="https://fury.apache.org/blog/fury#meta-string-introduction"; 
class="hash-link" aria-label="Direct link to Meta String Introduction" 
title="Direct link to Meta String Introduction">​</a></h2>
 <p>Meta string encoding algorithm is mainly used to encode meta strings such 
as <strong>field names, namespace, packageName, className, path and 
filename</strong>.
 Such a string is enumerated and limited, so the encoding performance is not 
important since we can cache the encoding result.</p>
@@ -28,20 +28,20 @@ Such a string is enumerated and limited, so the encoding 
performance is not impo
 <strong>37.5% space cost savings</strong> compared to utf-8 and has a smaller 
encoded binary size, which uses less storage and makes the network transfer 
faster.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-algorithms">Encoding Algorithms<a 
href="https://fury.apache.org/blog/fury#encoding-algorithms"; class="hash-link" 
aria-label="Direct link to Encoding Algorithms" title="Direct link to Encoding 
Algorithms">​</a></h2>
 <p>String binary encoding algorithm:</p>
-<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
-<p>Encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more detailed:</p>
+<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
+<p>If we use <code>LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL</code>, we must add 
a strip last char flag in encoded data. This is because every char will be 
encoded using <code>5/6</code> bits, and the last char may have 
<code>1~7</code> bits which are unused by encoding, such bits may cause an 
extra char to be read, which we must strip off.</p>
+<p>Here is encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more details:</p>
 <div class="language-java codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">private</span><span class="token plain"> </span><span 
class="token  [...]
-<p>Decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
+<p>Here is decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
 <div class="language-go codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">func</span><span class="token plain"> </span><span 
class="token punctua [...]
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="select-best-encoding">Select Best Encoding<a 
href="https://fury.apache.org/blog/fury#select-best-encoding"; class="hash-link" 
aria-label="Direct link to Select Best Encoding" title="Direct link to Select 
Best Encoding">​</a></h2>
-<p>For most lower chars, meta string will use <code>5</code> bits to encode 
every char. For string containing upper chars, meta string will try to convert 
the string into a
-lower representation by inserting some markers, and compare used bytes with 
<code>6</code> bits encoding, then select the encoding which has smaller 
encoded size.</p>
+<p>For most lowercase characters, meta string will use <code>5</code> bits to 
encode every char. For string containing uppercase chars, meta string will try 
to convert the string into a lower case representation by inserting some 
markers, and compare used bytes with <code>6</code> bits encoding, then select 
the encoding which has smaller encoded size.</p>
 <p>Here is the common encoding selection strategy:</p>
 <table><thead><tr><th>Encoding Flag</th><th>Pattern</th><th>Encoding 
Algorithm</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td>every char is 
in 
<code>a-z._|</code></td><td><code>LOWER_SPECIAL</code></td></tr><tr><td>FIRST_TO_LOWER_SPECIAL</td><td>every
 char is in <code>a-z._</code> except first char is upper case</td><td>replace 
first upper case char to lower case, then use 
<code>LOWER_SPECIAL</code></td></tr><tr><td>ALL_TO_LOWER_SPECIAL</td><td>every 
char is in <code>a-zA-Z._</cod [...]
 <p>For package name, module name or namespace, <code>LOWER_SPECIAL</code> will 
be used mostly. <code>ALL_TO_LOWER_SPECIAL</code> can be used too, since it can 
represent the same chars as <code>LOWER_SPECIAL</code> without using more bits, 
but also support string with uppercase chars.</p>
 <p>For className, <code>FIRST_TO_LOWER_SPECIAL</code> will be used mostly. If 
there are multiple uppercase chars, then <code>ALL_TO_LOWER_SPECIAL</code> will 
be used instead.
 If a string contains digits, then <code>LOWER_UPPER_DIGIT_SPECIAL</code> will 
be used.</p>
-<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars not in range <code>a-z0-9A-Z</code>.</p>
+<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars which is not in range <code>a-z0-9A-Z</code>.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-flags-and-data-jointly">Encoding Flags and Data jointly<a 
href="https://fury.apache.org/blog/fury#encoding-flags-and-data-jointly"; 
class="hash-link" aria-label="Direct link to Encoding Flags and Data jointly" 
title="Direct link to Encoding Flags and Data jointly">​</a></h2>
 <ul>
 <li>Depending on the case, one can choose encoding <code>flags + data</code> 
jointly, using 3 bits of first byte for flags and other bytes for data. This 
can be useful since there are some holes remaining in last byte, adding flags 
in data doesn't always increase serialized bytes size.</li>
diff --git a/blog/fury/index.html b/blog/fury/index.html
index 5975963..93d0b61 100644
--- a/blog/fury/index.html
+++ b/blog/fury/index.html
@@ -5,18 +5,18 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Meta String: A 37.5% space efficient string encoding 
than UTF-8 in Fury serialization | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog/fury";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"> [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 between processes.</p>
-<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we often encode such strings using utf-8 encodings. Such encoding
+<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 string between processes.</p>
+<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we encode such strings using utf-8 encodings. Such encoding
 will take one byte for every char, which is not space efficient actually.</p>
-<p>If we take a deeper look, we will found that most chars are <strong>lower 
chars plus <code>.</code>, <code>$</code> and <code>_</code></strong>, which 
can be expressed in a much
-smaller range <strong><code>0~32</code></strong>, and one byte can represent 
range <code>0~255</code>, the significant bits are wasted. And the cost is not 
ignorable, in a dynamic serialization
+<p>If we take a deeper look, we will found that most chars are 
<strong>lowercase chars,  <code>.</code>, <code>$</code> and 
<code>_</code></strong>, which can be expressed in a much
+smaller range <strong><code>0~32</code></strong>. But one byte can represent 
range <code>0~255</code>, the significant bits are wasted, and this cost is not 
ignorable. In a dynamic serialization
 framework, such meta will take considerable cost compared to real data.</p>
-<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong>. It will encode most chars using less bits instead of 
<code>8</code> bits in utf-8 encoding.</p>
+<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong> in Fury. It will encode most chars using 
<code>5</code> bits instead of <code>8</code> bits in utf-8 encoding, which can 
bring <strong>37.5% space cost savings</strong> compared to utf-8 encoding.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="meta-string-introduction">Meta String Introduction<a 
href="#meta-string-introduction" class="hash-link" aria-label="Direct link to 
Meta String Introduction" title="Direct link to Meta String 
Introduction">​</a></h2>
 <p>Meta string encoding algorithm is mainly used to encode meta strings such 
as <strong>field names, namespace, packageName, className, path and 
filename</strong>.
 Such a string is enumerated and limited, so the encoding performance is not 
important since we can cache the encoding result.</p>
@@ -24,20 +24,20 @@ Such a string is enumerated and limited, so the encoding 
performance is not impo
 <strong>37.5% space cost savings</strong> compared to utf-8 and has a smaller 
encoded binary size, which uses less storage and makes the network transfer 
faster.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-algorithms">Encoding Algorithms<a href="#encoding-algorithms" 
class="hash-link" aria-label="Direct link to Encoding Algorithms" title="Direct 
link to Encoding Algorithms">​</a></h2>
 <p>String binary encoding algorithm:</p>
-<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
-<p>Encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more detailed:</p>
+<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
+<p>If we use <code>LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL</code>, we must add 
a strip last char flag in encoded data. This is because every char will be 
encoded using <code>5/6</code> bits, and the last char may have 
<code>1~7</code> bits which are unused by encoding, such bits may cause an 
extra char to be read, which we must strip off.</p>
+<p>Here is encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more details:</p>
 <div class="language-java codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">private</span><span class="token plain"> </span><span 
class="token  [...]
-<p>Decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
+<p>Here is decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
 <div class="language-go codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">func</span><span class="token plain"> </span><span 
class="token punctua [...]
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="select-best-encoding">Select Best Encoding<a href="#select-best-encoding" 
class="hash-link" aria-label="Direct link to Select Best Encoding" 
title="Direct link to Select Best Encoding">​</a></h2>
-<p>For most lower chars, meta string will use <code>5</code> bits to encode 
every char. For string containing upper chars, meta string will try to convert 
the string into a
-lower representation by inserting some markers, and compare used bytes with 
<code>6</code> bits encoding, then select the encoding which has smaller 
encoded size.</p>
+<p>For most lowercase characters, meta string will use <code>5</code> bits to 
encode every char. For string containing uppercase chars, meta string will try 
to convert the string into a lower case representation by inserting some 
markers, and compare used bytes with <code>6</code> bits encoding, then select 
the encoding which has smaller encoded size.</p>
 <p>Here is the common encoding selection strategy:</p>
 <table><thead><tr><th>Encoding Flag</th><th>Pattern</th><th>Encoding 
Algorithm</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td>every char is 
in 
<code>a-z._|</code></td><td><code>LOWER_SPECIAL</code></td></tr><tr><td>FIRST_TO_LOWER_SPECIAL</td><td>every
 char is in <code>a-z._</code> except first char is upper case</td><td>replace 
first upper case char to lower case, then use 
<code>LOWER_SPECIAL</code></td></tr><tr><td>ALL_TO_LOWER_SPECIAL</td><td>every 
char is in <code>a-zA-Z._</cod [...]
 <p>For package name, module name or namespace, <code>LOWER_SPECIAL</code> will 
be used mostly. <code>ALL_TO_LOWER_SPECIAL</code> can be used too, since it can 
represent the same chars as <code>LOWER_SPECIAL</code> without using more bits, 
but also support string with uppercase chars.</p>
 <p>For className, <code>FIRST_TO_LOWER_SPECIAL</code> will be used mostly. If 
there are multiple uppercase chars, then <code>ALL_TO_LOWER_SPECIAL</code> will 
be used instead.
 If a string contains digits, then <code>LOWER_UPPER_DIGIT_SPECIAL</code> will 
be used.</p>
-<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars not in range <code>a-z0-9A-Z</code>.</p>
+<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars which is not in range <code>a-z0-9A-Z</code>.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-flags-and-data-jointly">Encoding Flags and Data jointly<a 
href="#encoding-flags-and-data-jointly" class="hash-link" aria-label="Direct 
link to Encoding Flags and Data jointly" title="Direct link to Encoding Flags 
and Data jointly">​</a></h2>
 <ul>
 <li>Depending on the case, one can choose encoding <code>flags + data</code> 
jointly, using 3 bits of first byte for flags and other bytes for data. This 
can be useful since there are some holes remaining in last byte, adding flags 
in data doesn&#x27;t always increase serialized bytes size.</li>
diff --git a/blog/fury_0_1_0_release/index.html 
b/blog/fury_0_1_0_release/index.html
index 459fd31..88c7557 100644
--- a/blog/fury_0_1_0_release/index.html
+++ b/blog/fury_0_1_0_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.1.0 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_1_0_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_1_1_release/index.html 
b/blog/fury_0_1_1_release/index.html
index 20fc278..fd3140a 100644
--- a/blog/fury_0_1_1_release/index.html
+++ b/blog/fury_0_1_1_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.1.1 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_1_1_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_1_2_release/index.html 
b/blog/fury_0_1_2_release/index.html
index d8c90e1..c94f0a7 100644
--- a/blog/fury_0_1_2_release/index.html
+++ b/blog/fury_0_1_2_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.1.2 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_1_2_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_2_0_release/index.html 
b/blog/fury_0_2_0_release/index.html
index 97cd2df..8415c61 100644
--- a/blog/fury_0_2_0_release/index.html
+++ b/blog/fury_0_2_0_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.2.0 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_2_0_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_2_1_release/index.html 
b/blog/fury_0_2_1_release/index.html
index a176a2f..ba0c0f8 100644
--- a/blog/fury_0_2_1_release/index.html
+++ b/blog/fury_0_2_1_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.2.1 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_2_1_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_3_0_release/index.html 
b/blog/fury_0_3_0_release/index.html
index 34b3bd7..6d239c2 100644
--- a/blog/fury_0_3_0_release/index.html
+++ b/blog/fury_0_3_0_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.3.0 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_3_0_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_3_1_release/index.html 
b/blog/fury_0_3_1_release/index.html
index fec9c12..a0e70d4 100644
--- a/blog/fury_0_3_1_release/index.html
+++ b/blog/fury_0_3_1_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.3.1 released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_3_1_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_4_0_release/index.html 
b/blog/fury_0_4_0_release/index.html
index 67c5a1c..27914d4 100644
--- a/blog/fury_0_4_0_release/index.html
+++ b/blog/fury_0_4_0_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury 0.4.0 Released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_4_0_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content=" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_4_1_release/index.html 
b/blog/fury_0_4_1_release/index.html
index a419bc8..5991e3f 100644
--- a/blog/fury_0_4_1_release/index.html
+++ b/blog/fury_0_4_1_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury 0.4.1 Released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_4_1_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content=" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/fury_0_5_0_release/index.html 
b/blog/fury_0_5_0_release/index.html
index c9b5085..5691a49 100644
--- a/blog/fury_0_5_0_release/index.html
+++ b/blog/fury_0_5_0_release/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury v0.5.0 Released | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_0_5_0_release";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content= [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git 
a/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html 
b/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html
index c04cae1..972b44d 100644
--- 
a/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html
+++ 
b/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Apache Fury: A blazing fast multi-language serialization 
framework powered by JIT and zero-copy | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/blog/fury_blazing_fast_multiple_language_serialization_framework";><meta
 data-rh="true" property="og:locale" content [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/index.html b/blog/index.html
index 5810433..734d239 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,18 +5,18 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Blog | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta 
data-rh="true" http- [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 between processes.</p>
-<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we often encode such strings using utf-8 encodings. Such encoding
+<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 string between processes.</p>
+<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we encode such strings using utf-8 encodings. Such encoding
 will take one byte for every char, which is not space efficient actually.</p>
-<p>If we take a deeper look, we will found that most chars are <strong>lower 
chars plus <code>.</code>, <code>$</code> and <code>_</code></strong>, which 
can be expressed in a much
-smaller range <strong><code>0~32</code></strong>, and one byte can represent 
range <code>0~255</code>, the significant bits are wasted. And the cost is not 
ignorable, in a dynamic serialization
+<p>If we take a deeper look, we will found that most chars are 
<strong>lowercase chars,  <code>.</code>, <code>$</code> and 
<code>_</code></strong>, which can be expressed in a much
+smaller range <strong><code>0~32</code></strong>. But one byte can represent 
range <code>0~255</code>, the significant bits are wasted, and this cost is not 
ignorable. In a dynamic serialization
 framework, such meta will take considerable cost compared to real data.</p>
-<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong>. It will encode most chars using less bits instead of 
<code>8</code> bits in utf-8 encoding.</p>
+<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong> in Fury. It will encode most chars using 
<code>5</code> bits instead of <code>8</code> bits in utf-8 encoding, which can 
bring <strong>37.5% space cost savings</strong> compared to utf-8 encoding.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="meta-string-introduction">Meta String Introduction<a 
href="#meta-string-introduction" class="hash-link" aria-label="Direct link to 
Meta String Introduction" title="Direct link to Meta String 
Introduction">​</a></h2>
 <p>Meta string encoding algorithm is mainly used to encode meta strings such 
as <strong>field names, namespace, packageName, className, path and 
filename</strong>.
 Such a string is enumerated and limited, so the encoding performance is not 
important since we can cache the encoding result.</p>
@@ -24,20 +24,20 @@ Such a string is enumerated and limited, so the encoding 
performance is not impo
 <strong>37.5% space cost savings</strong> compared to utf-8 and has a smaller 
encoded binary size, which uses less storage and makes the network transfer 
faster.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-algorithms">Encoding Algorithms<a href="#encoding-algorithms" 
class="hash-link" aria-label="Direct link to Encoding Algorithms" title="Direct 
link to Encoding Algorithms">​</a></h2>
 <p>String binary encoding algorithm:</p>
-<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
-<p>Encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more detailed:</p>
+<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
+<p>If we use <code>LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL</code>, we must add 
a strip last char flag in encoded data. This is because every char will be 
encoded using <code>5/6</code> bits, and the last char may have 
<code>1~7</code> bits which are unused by encoding, such bits may cause an 
extra char to be read, which we must strip off.</p>
+<p>Here is encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more details:</p>
 <div class="language-java codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">private</span><span class="token plain"> </span><span 
class="token  [...]
-<p>Decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
+<p>Here is decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
 <div class="language-go codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">func</span><span class="token plain"> </span><span 
class="token punctua [...]
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="select-best-encoding">Select Best Encoding<a href="#select-best-encoding" 
class="hash-link" aria-label="Direct link to Select Best Encoding" 
title="Direct link to Select Best Encoding">​</a></h2>
-<p>For most lower chars, meta string will use <code>5</code> bits to encode 
every char. For string containing upper chars, meta string will try to convert 
the string into a
-lower representation by inserting some markers, and compare used bytes with 
<code>6</code> bits encoding, then select the encoding which has smaller 
encoded size.</p>
+<p>For most lowercase characters, meta string will use <code>5</code> bits to 
encode every char. For string containing uppercase chars, meta string will try 
to convert the string into a lower case representation by inserting some 
markers, and compare used bytes with <code>6</code> bits encoding, then select 
the encoding which has smaller encoded size.</p>
 <p>Here is the common encoding selection strategy:</p>
 <table><thead><tr><th>Encoding Flag</th><th>Pattern</th><th>Encoding 
Algorithm</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td>every char is 
in 
<code>a-z._|</code></td><td><code>LOWER_SPECIAL</code></td></tr><tr><td>FIRST_TO_LOWER_SPECIAL</td><td>every
 char is in <code>a-z._</code> except first char is upper case</td><td>replace 
first upper case char to lower case, then use 
<code>LOWER_SPECIAL</code></td></tr><tr><td>ALL_TO_LOWER_SPECIAL</td><td>every 
char is in <code>a-zA-Z._</cod [...]
 <p>For package name, module name or namespace, <code>LOWER_SPECIAL</code> will 
be used mostly. <code>ALL_TO_LOWER_SPECIAL</code> can be used too, since it can 
represent the same chars as <code>LOWER_SPECIAL</code> without using more bits, 
but also support string with uppercase chars.</p>
 <p>For className, <code>FIRST_TO_LOWER_SPECIAL</code> will be used mostly. If 
there are multiple uppercase chars, then <code>ALL_TO_LOWER_SPECIAL</code> will 
be used instead.
 If a string contains digits, then <code>LOWER_UPPER_DIGIT_SPECIAL</code> will 
be used.</p>
-<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars not in range <code>a-z0-9A-Z</code>.</p>
+<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars which is not in range <code>a-z0-9A-Z</code>.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-flags-and-data-jointly">Encoding Flags and Data jointly<a 
href="#encoding-flags-and-data-jointly" class="hash-link" aria-label="Direct 
link to Encoding Flags and Data jointly" title="Direct link to Encoding Flags 
and Data jointly">​</a></h2>
 <ul>
 <li>Depending on the case, one can choose encoding <code>flags + data</code> 
jointly, using 3 bits of first byte for flags and other bytes for data. This 
can be useful since there are some holes remaining in last byte, adding flags 
in data doesn&#x27;t always increase serialized bytes size.</li>
diff --git a/blog/page/2/index.html b/blog/page/2/index.html
index 9130011..274225e 100644
--- a/blog/page/2/index.html
+++ b/blog/page/2/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Blog | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog/page/2";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"><meta data-rh="true [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/rss.xml b/blog/rss.xml
index f5e318c..a089a40 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -15,13 +15,13 @@
             <pubDate>Mon, 06 May 2024 00:00:00 GMT</pubDate>
             <description><![CDATA[Background]]></description>
             <content:encoded><![CDATA[<h2 class="anchor 
anchorWithStickyNavbar_LWe7" id="background">Background<a 
href="https://fury.apache.org/blog/fury#background"; class="hash-link" 
aria-label="Direct link to Background" title="Direct link to 
Background">​</a></h2>
-<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 between processes.</p>
-<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we often encode such strings using utf-8 encodings. Such encoding
+<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 string between processes.</p>
+<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we encode such strings using utf-8 encodings. Such encoding
 will take one byte for every char, which is not space efficient actually.</p>
-<p>If we take a deeper look, we will found that most chars are <strong>lower 
chars plus <code>.</code>, <code>$</code> and <code>_</code></strong>, which 
can be expressed in a much
-smaller range <strong><code>0~32</code></strong>, and one byte can represent 
range <code>0~255</code>, the significant bits are wasted. And the cost is not 
ignorable, in a dynamic serialization
+<p>If we take a deeper look, we will found that most chars are 
<strong>lowercase chars,  <code>.</code>, <code>$</code> and 
<code>_</code></strong>, which can be expressed in a much
+smaller range <strong><code>0~32</code></strong>. But one byte can represent 
range <code>0~255</code>, the significant bits are wasted, and this cost is not 
ignorable. In a dynamic serialization
 framework, such meta will take considerable cost compared to real data.</p>
-<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong>. It will encode most chars using less bits instead of 
<code>8</code> bits in utf-8 encoding.</p>
+<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong> in Fury. It will encode most chars using 
<code>5</code> bits instead of <code>8</code> bits in utf-8 encoding, which can 
bring <strong>37.5% space cost savings</strong> compared to utf-8 encoding.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="meta-string-introduction">Meta String Introduction<a 
href="https://fury.apache.org/blog/fury#meta-string-introduction"; 
class="hash-link" aria-label="Direct link to Meta String Introduction" 
title="Direct link to Meta String Introduction">​</a></h2>
 <p>Meta string encoding algorithm is mainly used to encode meta strings such 
as <strong>field names, namespace, packageName, className, path and 
filename</strong>.
 Such a string is enumerated and limited, so the encoding performance is not 
important since we can cache the encoding result.</p>
@@ -29,20 +29,20 @@ Such a string is enumerated and limited, so the encoding 
performance is not impo
 <strong>37.5% space cost savings</strong> compared to utf-8 and has a smaller 
encoded binary size, which uses less storage and makes the network transfer 
faster.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-algorithms">Encoding Algorithms<a 
href="https://fury.apache.org/blog/fury#encoding-algorithms"; class="hash-link" 
aria-label="Direct link to Encoding Algorithms" title="Direct link to Encoding 
Algorithms">​</a></h2>
 <p>String binary encoding algorithm:</p>
-<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
-<p>Encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more detailed:</p>
+<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
+<p>If we use <code>LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL</code>, we must add 
a strip last char flag in encoded data. This is because every char will be 
encoded using <code>5/6</code> bits, and the last char may have 
<code>1~7</code> bits which are unused by encoding, such bits may cause an 
extra char to be read, which we must strip off.</p>
+<p>Here is encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more details:</p>
 <div class="language-java codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">private</span><span class="token plain"> </span><span 
class="token  [...]
-<p>Decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
+<p>Here is decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
 <div class="language-go codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">func</span><span class="token plain"> </span><span 
class="token punctua [...]
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="select-best-encoding">Select Best Encoding<a 
href="https://fury.apache.org/blog/fury#select-best-encoding"; class="hash-link" 
aria-label="Direct link to Select Best Encoding" title="Direct link to Select 
Best Encoding">​</a></h2>
-<p>For most lower chars, meta string will use <code>5</code> bits to encode 
every char. For string containing upper chars, meta string will try to convert 
the string into a
-lower representation by inserting some markers, and compare used bytes with 
<code>6</code> bits encoding, then select the encoding which has smaller 
encoded size.</p>
+<p>For most lowercase characters, meta string will use <code>5</code> bits to 
encode every char. For string containing uppercase chars, meta string will try 
to convert the string into a lower case representation by inserting some 
markers, and compare used bytes with <code>6</code> bits encoding, then select 
the encoding which has smaller encoded size.</p>
 <p>Here is the common encoding selection strategy:</p>
 <table><thead><tr><th>Encoding Flag</th><th>Pattern</th><th>Encoding 
Algorithm</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td>every char is 
in 
<code>a-z._|</code></td><td><code>LOWER_SPECIAL</code></td></tr><tr><td>FIRST_TO_LOWER_SPECIAL</td><td>every
 char is in <code>a-z._</code> except first char is upper case</td><td>replace 
first upper case char to lower case, then use 
<code>LOWER_SPECIAL</code></td></tr><tr><td>ALL_TO_LOWER_SPECIAL</td><td>every 
char is in <code>a-zA-Z._</cod [...]
 <p>For package name, module name or namespace, <code>LOWER_SPECIAL</code> will 
be used mostly. <code>ALL_TO_LOWER_SPECIAL</code> can be used too, since it can 
represent the same chars as <code>LOWER_SPECIAL</code> without using more bits, 
but also support string with uppercase chars.</p>
 <p>For className, <code>FIRST_TO_LOWER_SPECIAL</code> will be used mostly. If 
there are multiple uppercase chars, then <code>ALL_TO_LOWER_SPECIAL</code> will 
be used instead.
 If a string contains digits, then <code>LOWER_UPPER_DIGIT_SPECIAL</code> will 
be used.</p>
-<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars not in range <code>a-z0-9A-Z</code>.</p>
+<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars which is not in range <code>a-z0-9A-Z</code>.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-flags-and-data-jointly">Encoding Flags and Data jointly<a 
href="https://fury.apache.org/blog/fury#encoding-flags-and-data-jointly"; 
class="hash-link" aria-label="Direct link to Encoding Flags and Data jointly" 
title="Direct link to Encoding Flags and Data jointly">​</a></h2>
 <ul>
 <li>Depending on the case, one can choose encoding <code>flags + data</code> 
jointly, using 3 bits of first byte for flags and other bytes for data. This 
can be useful since there are some holes remaining in last byte, adding flags 
in data doesn't always increase serialized bytes size.</li>
diff --git a/blog/tags/fury/index.html b/blog/tags/fury/index.html
index 468b115..c1273c1 100644
--- a/blog/tags/fury/index.html
+++ b/blog/tags/fury/index.html
@@ -5,18 +5,18 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">12 posts tagged with &quot;fury&quot; | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog/tags/fury";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:langua [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 between processes.</p>
-<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we often encode such strings using utf-8 encodings. Such encoding
+<p>In rpc/serialization systems, we often need to send 
<strong><code>namespace/path/filename/fieldName/packageName/moduleName/className/enumValue</code></strong>
 string between processes.</p>
+<p>Those strings are mostly ascii strings. In order to transfer between 
processes, we encode such strings using utf-8 encodings. Such encoding
 will take one byte for every char, which is not space efficient actually.</p>
-<p>If we take a deeper look, we will found that most chars are <strong>lower 
chars plus <code>.</code>, <code>$</code> and <code>_</code></strong>, which 
can be expressed in a much
-smaller range <strong><code>0~32</code></strong>, and one byte can represent 
range <code>0~255</code>, the significant bits are wasted. And the cost is not 
ignorable, in a dynamic serialization
+<p>If we take a deeper look, we will found that most chars are 
<strong>lowercase chars,  <code>.</code>, <code>$</code> and 
<code>_</code></strong>, which can be expressed in a much
+smaller range <strong><code>0~32</code></strong>. But one byte can represent 
range <code>0~255</code>, the significant bits are wasted, and this cost is not 
ignorable. In a dynamic serialization
 framework, such meta will take considerable cost compared to real data.</p>
-<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong>. It will encode most chars using less bits instead of 
<code>8</code> bits in utf-8 encoding.</p>
+<p>So we proposed a new string encoding algorithm which we called <strong>meta 
string encoding</strong> in Fury. It will encode most chars using 
<code>5</code> bits instead of <code>8</code> bits in utf-8 encoding, which can 
bring <strong>37.5% space cost savings</strong> compared to utf-8 encoding.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="meta-string-introduction">Meta String Introduction<a 
href="#meta-string-introduction" class="hash-link" aria-label="Direct link to 
Meta String Introduction" title="Direct link to Meta String 
Introduction">​</a></h2>
 <p>Meta string encoding algorithm is mainly used to encode meta strings such 
as <strong>field names, namespace, packageName, className, path and 
filename</strong>.
 Such a string is enumerated and limited, so the encoding performance is not 
important since we can cache the encoding result.</p>
@@ -24,20 +24,20 @@ Such a string is enumerated and limited, so the encoding 
performance is not impo
 <strong>37.5% space cost savings</strong> compared to utf-8 and has a smaller 
encoded binary size, which uses less storage and makes the network transfer 
faster.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-algorithms">Encoding Algorithms<a href="#encoding-algorithms" 
class="hash-link" aria-label="Direct link to Encoding Algorithms" title="Direct 
link to Encoding Algorithms">​</a></h2>
 <p>String binary encoding algorithm:</p>
-<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
-<p>Encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more detailed:</p>
+<table><thead><tr><th>Algorithm</th><th>Pattern</th><th>Description</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td><code>a-z._$|</code></td><td>every
 char is written using 5 bits, <code>a-z</code>: <code>0b00000~0b11001</code>, 
<code>._$|</code>: <code>0b11010~0b11101</code>, prepend one bit at the start 
to indicate whether strip last char since last byte may have 7 redundant bits(1 
indicates strip last 
char)</td></tr><tr><td>LOWER_UPPER_DIGIT_SPECIAL</td><td><code>a-zA-Z0~9._</co 
[...]
+<p>If we use <code>LOWER_SPECIAL/LOWER_UPPER_DIGIT_SPECIAL</code>, we must add 
a strip last char flag in encoded data. This is because every char will be 
encoded using <code>5/6</code> bits, and the last char may have 
<code>1~7</code> bits which are unused by encoding, such bits may cause an 
extra char to be read, which we must strip off.</p>
+<p>Here is encoding code snippet in java, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java#L235";
 target="_blank" rel="noopener 
noreferrer"><code>org.apache.fury.meta.MetaStringEncoder#encodeGeneric(char[], 
int)</code></a> for more details:</p>
 <div class="language-java codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">private</span><span class="token plain"> </span><span 
class="token  [...]
-<p>Decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
+<p>Here is decoding code snippet in golang, see <a 
href="https://github.com/apache/incubator-fury/blob/93800888595065b2690fec093ab0cbfd6ac7dedc/go/fury/meta/meta_string_decoder.go#L70";
 target="_blank" rel="noopener 
noreferrer"><code>go/fury/meta/meta_string_decoder.go:70</code></a> for more 
details:</p>
 <div class="language-go codeBlockContainer_Ckt0 theme-code-block" 
style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div 
class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-go 
codeBlock_bY9V thin-scrollbar" 
style="color:#393A34;background-color:#f6f8fa"><code 
class="codeBlockLines_e6Vv"><span class="token-line" 
style="color:#393A34"><span class="token keyword" 
style="color:#00009f">func</span><span class="token plain"> </span><span 
class="token punctua [...]
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="select-best-encoding">Select Best Encoding<a href="#select-best-encoding" 
class="hash-link" aria-label="Direct link to Select Best Encoding" 
title="Direct link to Select Best Encoding">​</a></h2>
-<p>For most lower chars, meta string will use <code>5</code> bits to encode 
every char. For string containing upper chars, meta string will try to convert 
the string into a
-lower representation by inserting some markers, and compare used bytes with 
<code>6</code> bits encoding, then select the encoding which has smaller 
encoded size.</p>
+<p>For most lowercase characters, meta string will use <code>5</code> bits to 
encode every char. For string containing uppercase chars, meta string will try 
to convert the string into a lower case representation by inserting some 
markers, and compare used bytes with <code>6</code> bits encoding, then select 
the encoding which has smaller encoded size.</p>
 <p>Here is the common encoding selection strategy:</p>
 <table><thead><tr><th>Encoding Flag</th><th>Pattern</th><th>Encoding 
Algorithm</th></tr></thead><tbody><tr><td>LOWER_SPECIAL</td><td>every char is 
in 
<code>a-z._|</code></td><td><code>LOWER_SPECIAL</code></td></tr><tr><td>FIRST_TO_LOWER_SPECIAL</td><td>every
 char is in <code>a-z._</code> except first char is upper case</td><td>replace 
first upper case char to lower case, then use 
<code>LOWER_SPECIAL</code></td></tr><tr><td>ALL_TO_LOWER_SPECIAL</td><td>every 
char is in <code>a-zA-Z._</cod [...]
 <p>For package name, module name or namespace, <code>LOWER_SPECIAL</code> will 
be used mostly. <code>ALL_TO_LOWER_SPECIAL</code> can be used too, since it can 
represent the same chars as <code>LOWER_SPECIAL</code> without using more bits, 
but also support string with uppercase chars.</p>
 <p>For className, <code>FIRST_TO_LOWER_SPECIAL</code> will be used mostly. If 
there are multiple uppercase chars, then <code>ALL_TO_LOWER_SPECIAL</code> will 
be used instead.
 If a string contains digits, then <code>LOWER_UPPER_DIGIT_SPECIAL</code> will 
be used.</p>
-<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars not in range <code>a-z0-9A-Z</code>.</p>
+<p>Finally, utf8 will be the fallback encoding if the string contains some 
chars which is not in range <code>a-z0-9A-Z</code>.</p>
 <h2 class="anchor anchorWithStickyNavbar_LWe7" 
id="encoding-flags-and-data-jointly">Encoding Flags and Data jointly<a 
href="#encoding-flags-and-data-jointly" class="hash-link" aria-label="Direct 
link to Encoding Flags and Data jointly" title="Direct link to Encoding Flags 
and Data jointly">​</a></h2>
 <ul>
 <li>Depending on the case, one can choose encoding <code>flags + data</code> 
jointly, using 3 bits of first byte for flags and other bytes for data. This 
can be useful since there are some holes remaining in last byte, adding flags 
in data doesn&#x27;t always increase serialized bytes size.</li>
diff --git a/blog/tags/fury/page/2/index.html b/blog/tags/fury/page/2/index.html
index aed69b9..8985eec 100644
--- a/blog/tags/fury/page/2/index.html
+++ b/blog/tags/fury/page/2/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">12 posts tagged with &quot;fury&quot; | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog/tags/fury/page/2";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 9a064d6..0bab118 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Tags | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/blog/tags";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"><meta data-rh="true"  [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/development/index.html 
b/docs/guide/development/index.html
index d895d46..2c75afa 100644
--- a/docs/guide/development/index.html
+++ b/docs/guide/development/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Development | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/development";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docsearch:language" content="en">< [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/graalvm_guide/index.html 
b/docs/guide/graalvm_guide/index.html
index e72314e..eb4b7c3 100644
--- a/docs/guide/graalvm_guide/index.html
+++ b/docs/guide/graalvm_guide/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">GraalVM Guide | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/graalvm_guide";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docsearch:language" content="e [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/java_object_graph_guide/index.html 
b/docs/guide/java_object_graph_guide/index.html
index 8bc7b2b..0cb57bb 100644
--- a/docs/guide/java_object_graph_guide/index.html
+++ b/docs/guide/java_object_graph_guide/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Java Serialization Guide | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/java_object_graph_guide";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/row_format_guide/index.html 
b/docs/guide/row_format_guide/index.html
index b05545d..b814364 100644
--- a/docs/guide/row_format_guide/index.html
+++ b/docs/guide/row_format_guide/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Row Format Guide | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/row_format_guide";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" cont [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/scala_guide/index.html 
b/docs/guide/scala_guide/index.html
index 16edaeb..5151768 100644
--- a/docs/guide/scala_guide/index.html
+++ b/docs/guide/scala_guide/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Scala Serialization Guide | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/scala_guide";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docsearch:language"  [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/xlang_object_graph_guide/index.html 
b/docs/guide/xlang_object_graph_guide/index.html
index 82c735d..8e5adfe 100644
--- a/docs/guide/xlang_object_graph_guide/index.html
+++ b/docs/guide/xlang_object_graph_guide/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Xlang Serialization Guide | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/xlang_object_graph_guide";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" name="docsear [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/guide/xlang_type_mapping/index.html 
b/docs/guide/xlang_type_mapping/index.html
index 15db922..1ef1eca 100644
--- a/docs/guide/xlang_type_mapping/index.html
+++ b/docs/guide/xlang_type_mapping/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Type Mapping of Xlang Serialization | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/guide/xlang_type_mapping";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" name="doc [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/introduction/benchmark/index.html 
b/docs/introduction/benchmark/index.html
index ff39f3e..235a853 100644
--- a/docs/introduction/benchmark/index.html
+++ b/docs/introduction/benchmark/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Benchmark | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/introduction/benchmark";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/introduction/features/index.html 
b/docs/introduction/features/index.html
index 45e46ad..0650e73 100644
--- a/docs/introduction/features/index.html
+++ b/docs/introduction/features/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Features | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/introduction/features";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"> [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/introduction/index.html b/docs/introduction/index.html
index 132cae5..0d362f1 100644
--- a/docs/introduction/index.html
+++ b/docs/introduction/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Introduction | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/docs/introduction/";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"><met [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/specification/fury_java_serialization_spec/index.html 
b/docs/specification/fury_java_serialization_spec/index.html
index dd1f73e..3199246 100644
--- a/docs/specification/fury_java_serialization_spec/index.html
+++ b/docs/specification/fury_java_serialization_spec/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury Java Serialization Format | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/specification/fury_java_serialization_spec";><meta
 data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="tr [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/specification/fury_row_format_spec/index.html 
b/docs/specification/fury_row_format_spec/index.html
index 832b947..7996cde 100644
--- a/docs/specification/fury_row_format_spec/index.html
+++ b/docs/specification/fury_row_format_spec/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury Row Format | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/specification/fury_row_format_spec";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:lan 
[...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/specification/fury_xlang_serialization_spec/index.html 
b/docs/specification/fury_xlang_serialization_spec/index.html
index b412e6c..cb8d7f3 100644
--- a/docs/specification/fury_xlang_serialization_spec/index.html
+++ b/docs/specification/fury_xlang_serialization_spec/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Fury Xlang Serialization Format | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" 
content="https://fury.apache.org/docs/specification/fury_xlang_serialization_spec";><meta
 data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh=" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/start/install/index.html b/docs/start/install/index.html
index 8a15551..188cf2c 100644
--- a/docs/start/install/index.html
+++ b/docs/start/install/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Install | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/docs/start/install";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"><meta dat [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/docs/start/usage/index.html b/docs/start/usage/index.html
index ca79a3c..726f513 100644
--- a/docs/start/usage/index.html
+++ b/docs/start/usage/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Usage | Apache Fury (incubating)</title><meta 
data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/docs/start/usage";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docsearch:language" content="en"><meta data-rh [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/download/index.html b/download/index.html
index 5166f50..23a9b57 100644
--- a/download/index.html
+++ b/download/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Apache Fury(incubating) Download | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/download";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docusaurus_tag" content="de [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/index.html b/index.html
index 821aff1..bb7a763 100644
--- a/index.html
+++ b/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Apache Fury (incubating) | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/";><meta data-rh="true" 
property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" 
content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta 
dat [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/lunr-index-1715045432718.json b/lunr-index-1715045432718.json
deleted file mode 100644
index f8252b5..0000000
--- a/lunr-index-1715045432718.json
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,88.126,1,852.017,2,438.979]],["content/0",[]],["keywords/0",[]],["title/1",[3,794.026]],["content/1",[0,1.439,4,3.808,5,11.531,6,9.035,7,11.531,8,11.531,9,1.246,10,13.915,11,2.967,12,10.26,13,6.699,14,6.559,15,8.185,16,7.004,17,13.915,18,7.533,19,3.86,20,10.824,21,9.387,22,5.441,23,16.976,24,13.915,25,12.478,26,13.915]],["keywords/1",[]],["title/2",[27,638.609,28,582.084]],["content/2",[0,1.603,4,3.7
 [...]
\ No newline at end of file
diff --git a/lunr-index-1715048363964.json b/lunr-index-1715048363964.json
new file mode 100644
index 0000000..88b84ba
--- /dev/null
+++ b/lunr-index-1715048363964.json
@@ -0,0 +1 @@
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,86.77,1,852.017,2,438.979]],["content/0",[]],["keywords/0",[]],["title/1",[3,794.026]],["content/1",[0,1.417,4,3.808,5,11.533,6,9.036,7,11.533,8,11.533,9,1.246,10,13.916,11,2.967,12,10.261,13,6.7,14,6.559,15,8.186,16,7.005,17,13.916,18,7.533,19,3.861,20,10.826,21,9.388,22,5.442,23,16.977,24,13.916,25,12.479,26,13.916]],["keywords/1",[]],["title/2",[27,638.609,28,582.084]],["content/2",[0,1.578,4,3.70
 [...]
\ No newline at end of file
diff --git a/lunr-index.json b/lunr-index.json
index f8252b5..88b84ba 100644
--- a/lunr-index.json
+++ b/lunr-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,88.126,1,852.017,2,438.979]],["content/0",[]],["keywords/0",[]],["title/1",[3,794.026]],["content/1",[0,1.439,4,3.808,5,11.531,6,9.035,7,11.531,8,11.531,9,1.246,10,13.915,11,2.967,12,10.26,13,6.699,14,6.559,15,8.185,16,7.004,17,13.915,18,7.533,19,3.86,20,10.824,21,9.387,22,5.441,23,16.976,24,13.915,25,12.478,26,13.915]],["keywords/1",[]],["title/2",[27,638.609,28,582.084]],["content/2",[0,1.603,4,3.7
 [...]
\ No newline at end of file
+{"version":"2.3.9","fields":["title","content","keywords"],"fieldVectors":[["title/0",[0,86.77,1,852.017,2,438.979]],["content/0",[]],["keywords/0",[]],["title/1",[3,794.026]],["content/1",[0,1.417,4,3.808,5,11.533,6,9.036,7,11.533,8,11.533,9,1.246,10,13.916,11,2.967,12,10.261,13,6.7,14,6.559,15,8.186,16,7.005,17,13.916,18,7.533,19,3.861,20,10.826,21,9.388,22,5.442,23,16.977,24,13.916,25,12.479,26,13.916]],["keywords/1",[]],["title/2",[27,638.609,28,582.084]],["content/2",[0,1.578,4,3.70
 [...]
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index f8cc303..34056e4 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -5,8 +5,8 @@
 <meta name="generator" content="Docusaurus v3.0.1">
 <title data-rh="true">Markdown page example | Apache Fury 
(incubating)</title><meta data-rh="true" name="viewport" 
content="width=device-width,initial-scale=1"><meta data-rh="true" 
name="twitter:card" content="summary_large_image"><meta data-rh="true" 
property="og:url" content="https://fury.apache.org/markdown-page";><meta 
data-rh="true" property="og:locale" content="en"><meta data-rh="true" 
name="docusaurus_locale" content="en"><meta data-rh="true" 
name="docusaurus_tag" content="default" [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" 
title="Apache Fury (incubating) Atom Feed"><link rel="stylesheet" 
href="/assets/css/styles.d3c1e154.css">
-<script src="/assets/js/runtime~main.f673c4ba.js" defer="defer"></script>
-<script src="/assets/js/main.e04cc605.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.36ff1eee.js" defer="defer"></script>
+<script src="/assets/js/main.9025f89e.js" defer="defer"></script>
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function 
t(t){document.documentElement.setAttribute("data-theme",t)}var 
e=function(){try{return new 
URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return
 
localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const
 c=new URLSearchParams(window.location.search).entries();for(var[t,e]of 
c)if(t.startsWith("docusaurus-data-")){var 
a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/search-doc-1715045432718.json b/search-doc-1715045432718.json
deleted file mode 100644
index 0a69687..0000000
--- a/search-doc-1715045432718.json
+++ /dev/null
@@ -1 +0,0 @@
-{"searchDocs":[{"title":"Fury v0.1.1 
released","type":0,"sectionRef":"#","url":"/blog/fury_0_1_1_release","content":"","keywords":"","version":null},{"title":"Highlights​","type":1,"pageTitle":"Fury
 v0.1.1 released","url":"/blog/fury_0_1_1_release#highlights","content":" Java 
Dubbo fury integration: 
https://github.com/fury-project/dubbo-serialization-furyAdd class checker API 
to customize security check behaviour(#890) Python Support pyarrow6 bazel build 
(#859 #862)Support python 3.10 (# [...]
\ No newline at end of file
diff --git a/search-doc-1715048363964.json b/search-doc-1715048363964.json
new file mode 100644
index 0000000..1a32e47
--- /dev/null
+++ b/search-doc-1715048363964.json
@@ -0,0 +1 @@
+{"searchDocs":[{"title":"Fury v0.1.1 
released","type":0,"sectionRef":"#","url":"/blog/fury_0_1_1_release","content":"","keywords":"","version":null},{"title":"Highlights​","type":1,"pageTitle":"Fury
 v0.1.1 released","url":"/blog/fury_0_1_1_release#highlights","content":" Java 
Dubbo fury integration: 
https://github.com/fury-project/dubbo-serialization-furyAdd class checker API 
to customize security check behaviour(#890) Python Support pyarrow6 bazel build 
(#859 #862)Support python 3.10 (# [...]
\ No newline at end of file
diff --git a/search-doc.json b/search-doc.json
index 0a69687..1a32e47 100644
--- a/search-doc.json
+++ b/search-doc.json
@@ -1 +1 @@
-{"searchDocs":[{"title":"Fury v0.1.1 
released","type":0,"sectionRef":"#","url":"/blog/fury_0_1_1_release","content":"","keywords":"","version":null},{"title":"Highlights​","type":1,"pageTitle":"Fury
 v0.1.1 released","url":"/blog/fury_0_1_1_release#highlights","content":" Java 
Dubbo fury integration: 
https://github.com/fury-project/dubbo-serialization-furyAdd class checker API 
to customize security check behaviour(#890) Python Support pyarrow6 bazel build 
(#859 #862)Support python 3.10 (# [...]
\ No newline at end of file
+{"searchDocs":[{"title":"Fury v0.1.1 
released","type":0,"sectionRef":"#","url":"/blog/fury_0_1_1_release","content":"","keywords":"","version":null},{"title":"Highlights​","type":1,"pageTitle":"Fury
 v0.1.1 released","url":"/blog/fury_0_1_1_release#highlights","content":" Java 
Dubbo fury integration: 
https://github.com/fury-project/dubbo-serialization-furyAdd class checker API 
to customize security check behaviour(#890) Python Support pyarrow6 bazel build 
(#859 #862)Support python 3.10 (# [...]
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@fury.apache.org
For additional commands, e-mail: commits-h...@fury.apache.org

Reply via email to