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 084f72c deploy: 89047c5d1d337208af386cfa1931a33e8714426a 084f72c is described below commit 084f72c785480bd661c0a13e70db42da60acf353 Author: PragmaTwice <pragmatw...@users.noreply.github.com> AuthorDate: Mon Dec 25 14:50:15 2023 +0000 deploy: 89047c5d1d337208af386cfa1931a33e8714426a --- 404.html | 2 +- blog/fury_0_1_0_release/index.html | 2 +- blog/fury_0_1_1_release/index.html | 2 +- blog/fury_0_1_2_release/index.html | 2 +- blog/fury_0_2_0_release/index.html | 2 +- blog/fury_0_2_1_release/index.html | 2 +- blog/fury_0_3_0_release/index.html | 2 +- blog/fury_0_3_1_release/index.html | 2 +- blog/fury_0_4_0_release/index.html | 2 +- blog/fury_0_4_1_release/index.html | 2 +- .../index.html | 2 +- blog/list/index.html | 2 +- docs__index.md.778c6473.chunk.css | 1 + docs__index.md.dffeadb3.async.js | 1 + ...__dumi__theme__ContextWrapper.0bd6f14b.async.js | 2 +- guide/development/index.html | 2 +- guide/graalvm_guide/index.html | 2 +- guide/java_object_graph_guide/index.html | 2 +- guide/row_format_guide/index.html | 2 +- guide/scala_guide/index.html | 2 +- guide/xlang_object_graph_guide/index.html | 2 +- blog/fury_0_2_0_release/index.html => index.html | 2 +- introduction/benchmark/index.html | 2 +- introduction/features/index.html | 2 +- introduction/introduction/index.html | 2 +- start/install/index.html | 2 +- start/usage/index.html | 2 +- umi.39c9eede.js => umi.8f9af598.js | 116 ++++++++++----------- zh/blog/fury_0_1_0_release/index.html | 2 +- zh/blog/fury_0_1_1_release/index.html | 2 +- zh/blog/fury_0_1_2_release/index.html | 2 +- zh/blog/fury_0_2_0_release/index.html | 2 +- zh/blog/fury_0_2_1_release/index.html | 2 +- zh/blog/fury_0_3_0_release/index.html | 2 +- zh/blog/fury_0_3_1_release/index.html | 2 +- zh/blog/fury_0_4_0_release/index.html | 2 +- zh/blog/fury_0_4_1_release/index.html | 2 +- .../index.html | 2 +- zh/blog/list/index.html | 2 +- zh/guide/java_object_graph_guide/index.html | 2 +- zh/guide/row_format_guide/index.html | 2 +- zh/guide/xlang_object_graph_guide/index.html | 2 +- zh/introduction/benchmark/index.html | 2 +- zh/introduction/features/index.html | 2 +- zh/introduction/introduction/index.html | 2 +- zh/start/install/index.html | 2 +- zh/start/usage/index.html | 2 +- ~demos/:id/index.html | 2 +- 48 files changed, 105 insertions(+), 103 deletions(-) diff --git a/404.html b/404.html index f6537e9..a34c132 100644 --- a/404.html +++ b/404.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_1_0_release/index.html b/blog/fury_0_1_0_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_1_0_release/index.html +++ b/blog/fury_0_1_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_1_1_release/index.html b/blog/fury_0_1_1_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_1_1_release/index.html +++ b/blog/fury_0_1_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_1_2_release/index.html b/blog/fury_0_1_2_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_1_2_release/index.html +++ b/blog/fury_0_1_2_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_2_0_release/index.html b/blog/fury_0_2_0_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_2_0_release/index.html +++ b/blog/fury_0_2_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_2_1_release/index.html b/blog/fury_0_2_1_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_2_1_release/index.html +++ b/blog/fury_0_2_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_3_0_release/index.html b/blog/fury_0_3_0_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_3_0_release/index.html +++ b/blog/fury_0_3_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_3_1_release/index.html b/blog/fury_0_3_1_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_3_1_release/index.html +++ b/blog/fury_0_3_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_4_0_release/index.html b/blog/fury_0_4_0_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_4_0_release/index.html +++ b/blog/fury_0_4_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_4_1_release/index.html b/blog/fury_0_4_1_release/index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_4_1_release/index.html +++ b/blog/fury_0_4_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file 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 f6537e9..a34c132 100644 --- a/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html +++ b/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/list/index.html b/blog/list/index.html index f6537e9..a34c132 100644 --- a/blog/list/index.html +++ b/blog/list/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/docs__index.md.778c6473.chunk.css b/docs__index.md.778c6473.chunk.css new file mode 100644 index 0000000..563c5c9 --- /dev/null +++ b/docs__index.md.778c6473.chunk.css @@ -0,0 +1 @@ +.dumi-default-table{margin:24px 0 32px;transform:translate(0)}.dumi-default-table-content{overflow:auto}.dumi-default-table-content:before,.dumi-default-table-content:after{content:"";display:block;position:fixed;z-index:1;top:0;bottom:0;width:6px;pointer-events:none}.dumi-default-table-content[data-left-folded]:before{left:0;background-image:linear-gradient(to right,rgba(0,0,0,.1),rgba(0,0,0,0))}[data-prefers-color=dark] .dumi-default-table-content[data-left-folded]:before{background-im [...] diff --git a/docs__index.md.dffeadb3.async.js b/docs__index.md.dffeadb3.async.js new file mode 100644 index 0000000..b5972ca --- /dev/null +++ b/docs__index.md.dffeadb3.async.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[935],{36680:function(r,u,_){_.r(u);var o=_(71100),s=_(35532),d=_(37402),a=_(92225),m=_(3972),E=_(67915),f=_(35604),t=_(85956),l=_(62435),e=_(86074);function n(){var i=(0,t.eL)(),M=i.texts;return(0,e.jsx)(t.dY,{children:(0,e.jsx)(e.Fragment,{})})}u.default=n}}]); diff --git a/dumi__tmp-production__dumi__theme__ContextWrapper.1485af2f.async.js b/dumi__tmp-production__dumi__theme__ContextWrapper.0bd6f14b.async.js similarity index 98% rename from dumi__tmp-production__dumi__theme__ContextWrapper.1485af2f.async.js rename to dumi__tmp-production__dumi__theme__ContextWrapper.0bd6f14b.async.js index 6eeac1f..50cb05d 100644 --- a/dumi__tmp-production__dumi__theme__ContextWrapper.1485af2f.async.js +++ b/dumi__tmp-production__dumi__theme__ContextWrapper.0bd6f14b.async.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[923],{34576:function(z,a,e){e.r(a),e.d(a,{default:function(){return _}});var l=e(5574),u=e.n(l),t=e(62435),i=e(85956),A=e(64236),o=e(56347),d=e(90482),c=e(86074),h={};function _(){var m=(0,i.pC)(),g=(0,t.useState)(!1),r=u()(g,2),p=r[0],f=r[1],n=(0,t.useRef)(i.m8.location.pathname);return(0,t.useEffect)(function(){return i.m8.listen(function(s){s.location.pathname!==n.current&&(n.current=s.location.pathname,do [...] +"use strict";(self.webpackChunkfury_site=self.webpackChunkfury_site||[]).push([[923],{34576:function(z,a,e){e.r(a),e.d(a,{default:function(){return _}});var l=e(5574),u=e.n(l),t=e(62435),i=e(85956),A=e(64236),o=e(74067),d=e(90482),c=e(86074),h={};function _(){var m=(0,i.pC)(),g=(0,t.useState)(!1),r=u()(g,2),p=r[0],f=r[1],n=(0,t.useRef)(i.m8.location.pathname);return(0,t.useEffect)(function(){return i.m8.listen(function(s){s.location.pathname!==n.current&&(n.current=s.location.pathname,do [...] diff --git a/guide/development/index.html b/guide/development/index.html index f6537e9..a34c132 100644 --- a/guide/development/index.html +++ b/guide/development/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/guide/graalvm_guide/index.html b/guide/graalvm_guide/index.html index f6537e9..a34c132 100644 --- a/guide/graalvm_guide/index.html +++ b/guide/graalvm_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/guide/java_object_graph_guide/index.html b/guide/java_object_graph_guide/index.html index f6537e9..a34c132 100644 --- a/guide/java_object_graph_guide/index.html +++ b/guide/java_object_graph_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/guide/row_format_guide/index.html b/guide/row_format_guide/index.html index f6537e9..a34c132 100644 --- a/guide/row_format_guide/index.html +++ b/guide/row_format_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/guide/scala_guide/index.html b/guide/scala_guide/index.html index f6537e9..a34c132 100644 --- a/guide/scala_guide/index.html +++ b/guide/scala_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/guide/xlang_object_graph_guide/index.html b/guide/xlang_object_graph_guide/index.html index f6537e9..a34c132 100644 --- a/guide/xlang_object_graph_guide/index.html +++ b/guide/xlang_object_graph_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/blog/fury_0_2_0_release/index.html b/index.html similarity index 89% copy from blog/fury_0_2_0_release/index.html copy to index.html index f6537e9..a34c132 100644 --- a/blog/fury_0_2_0_release/index.html +++ b/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/introduction/benchmark/index.html b/introduction/benchmark/index.html index f6537e9..a34c132 100644 --- a/introduction/benchmark/index.html +++ b/introduction/benchmark/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/introduction/features/index.html b/introduction/features/index.html index f6537e9..a34c132 100644 --- a/introduction/features/index.html +++ b/introduction/features/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/introduction/introduction/index.html b/introduction/introduction/index.html index f6537e9..a34c132 100644 --- a/introduction/introduction/index.html +++ b/introduction/introduction/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/start/install/index.html b/start/install/index.html index f6537e9..a34c132 100644 --- a/start/install/index.html +++ b/start/install/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/start/usage/index.html b/start/usage/index.html index f6537e9..a34c132 100644 --- a/start/usage/index.html +++ b/start/usage/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/umi.39c9eede.js b/umi.8f9af598.js similarity index 80% rename from umi.39c9eede.js rename to umi.8f9af598.js index 0c93292..9e91393 100644 --- a/umi.39c9eede.js +++ b/umi.8f9af598.js @@ -1,4 +1,4 @@ -(function(){var __webpack_modules__={25687:function(d,m,e){"use strict";e.d(m,{kG:function(){return f}});function n(v){return Math.floor(Math.log(v)*Math.LOG10E)}function r(v,I){if(typeof v.repeat=="function")return v.repeat(I);for(var g=new Array(I),x=0;x<g.length;x++)g[x]=v;return g.join("")}function o(v,I,g,x){v.get(I)||v.set(I,Object.create(null));var E=v.get(I);E[g]=x}function u(v,I,g){for(var x=0,E=Object.keys(g);x<E.length;x++){var k=E[x];o(v,I,k,g[k])}}function s(v,I,g){return l( [...] +(function(){var __webpack_modules__={25687:function(d,m,e){"use strict";e.d(m,{kG:function(){return f}});function n(v){return Math.floor(Math.log(v)*Math.LOG10E)}function r(v,I){if(typeof v.repeat=="function")return v.repeat(I);for(var g=new Array(I),x=0;x<g.length;x++)g[x]=v;return g.join("")}function o(v,I,g,x){v.get(I)||v.set(I,Object.create(null));var E=v.get(I);E[g]=x}function u(v,I,g){for(var x=0,E=Object.keys(g);x<E.length;x++){var k=E[x];o(v,I,k,g[k])}}function s(v,I,g){return l( [...] `).concat(k?` `.concat(k.message,` `).concat(k.stack):""))||this,E.code=I,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(E,v),E}return v}(Error),u=function(f){(0,n.ZT)(v,f);function v(I,g){return f.call(this,r.UNSUPPORTED_FORMATTER,I,g)||this}return v}(o),s=function(f){(0,n.ZT)(v,f);function v(I,g){return f.call(this,r.INVALID_CONFIG,I,g)||this}return v}(o),l=function(f){(0,n.ZT)(v,f);function v(I,g){return f.call(this,r.MISSING_DATA,I,g)||this}return v}(o),c=function(f){(0,n.ZT)(v,f);function v(I,g,x [...] @@ -7,7 +7,7 @@ Locale: `).concat(g,` MessageID: `).concat(x==null?void 0:x.id,` Default Message: `).concat(x==null?void 0:x.defaultMessage,` Description: `).concat(x==null?void 0:x.description,` -`),g,E)||this;return k.descriptor=x,k.locale=g,k}return v}(c),y=function(f){(0,n.ZT)(v,f);function v(I,g){var x=f.call(this,r.MISSING_TRANSLATION,'Missing message: "'.concat(I.id,'" for locale "').concat(g,'", using ').concat(I.defaultMessage?"default message (".concat(typeof I.defaultMessage=="string"?I.defaultMessage:I.defaultMessage.map(function(E){var k;return(k=E.value)!==null&&k!==void 0?k:JSON.stringify(E)}).join(),")"):"id"," as fallback."))||this;return x.descriptor=I,x}return v [...] +`),g,E)||this;return k.descriptor=x,k.locale=g,k}return v}(c),y=function(f){(0,n.ZT)(v,f);function v(I,g){var x=f.call(this,r.MISSING_TRANSLATION,'Missing message: "'.concat(I.id,'" for locale "').concat(g,'", using ').concat(I.defaultMessage?"default message (".concat(typeof I.defaultMessage=="string"?I.defaultMessage:I.defaultMessage.map(function(E){var k;return(k=E.value)!==null&&k!==void 0?k:JSON.stringify(E)}).join(),")"):"id"," as fallback."))||this;return x.descriptor=I,x}return v [...] Try polyfilling it using "@formatjs/intl-relativetimeformat" `,Tt.jK.MISSING_INTL_API));try{return ha(re,_e,Re).format(pe,ie)}catch(We){re.onError(new Me.Qe("Error formatting relative time.",re.locale,We))}return String(pe)}var $e=["formatMatcher","timeZone","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName","hourCycle","dateStyle","timeStyle","calendar","numberingSystem","fractionalSecondDigits"];function Qe(re,_e,pe,ie){var Re=re.locale,Te=re.formats,We=re.onError,Ye=re.timeZone;ie===void 0&&(ie={});var Ot=ie.f [...] Try polyfilling it using "@formatjs/intl-pluralrules" @@ -17,7 +17,7 @@ Try polyfilling it using "@formatjs/intl-listformat" Try polyfilling it using "@formatjs/intl-displaynames" `,Tt.jK.MISSING_INTL_API));var Ye=(0,b.L6)(ie,pr);try{return _e(Re,Ye).of(pe)}catch(Ot){Te(new Me.Qe("Error formatting display name.",Re,Ot))}}function sr(re){var _e=re?re[Object.keys(re)[0]]:void 0;return typeof _e=="string"}function cr(re){re.onWarn&&re.defaultRichTextElements&&sr(re.messages||{})&&re.onWarn(`[@formatjs/intl] "defaultRichTextElements" was specified but "message" was not pre-compiled. Please consider using "@formatjs/cli" to pre-compile your messages for performance. -For more details see https://formatjs.io/docs/getting-started/message-distribution`)}function Za(re,_e){var pe=(0,b.ax)(_e),ie=(0,Q.pi)((0,Q.pi)({},b.Z0),re),Re=ie.locale,Te=ie.defaultLocale,We=ie.onError;return Re?!Intl.NumberFormat.supportedLocalesOf(Re).length&&We?We(new Me.gb('Missing locale data for locale: "'.concat(Re,'" in Intl.NumberFormat. Using default locale: "').concat(Te,'" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))):!Intl. [...] +For more details see https://formatjs.io/docs/getting-started/message-distribution`)}function Za(re,_e){var pe=(0,b.ax)(_e),ie=(0,Q.pi)((0,Q.pi)({},b.Z0),re),Re=ie.locale,Te=ie.defaultLocale,We=ie.onError;return Re?!Intl.NumberFormat.supportedLocalesOf(Re).length&&We?We(new Me.gb('Missing locale data for locale: "'.concat(Re,'" in Intl.NumberFormat. Using default locale: "').concat(Te,'" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details'))):!Intl. [...] other distributed systems. `,paraId:3,tocIndex:1},{value:`Data transfer between processes/languages/nodes, or object persistence, state read/write and copy`,paraId:3,tocIndex:1},{value:` all need serialization. @@ -133,7 +133,7 @@ development and discussion are open-sourced and transparent in the community. An including but not limited to questions, code contributions, technical discussions, etc. We are looking forward to receiving your ideas and feedback, participating in the project together, pushing the project forward and creating a better serialization framework.`,paraId:47,tocIndex:15},{value:`The GitHub address of the fury repository is: -`,paraId:48,tocIndex:15},{value:"https://github.com/alipay/fury",paraId:48,tocIndex:15},{value:"Official website: ",paraId:49,tocIndex:15},{value:"https://furyio.org",paraId:49,tocIndex:15},{value:"All issues, PR, and Discussion are welcome.",paraId:50,tocIndex:15}],h={},y={title:"Join US",toc:"menu",filename:"docs/blog/fury_blazing_fast_multiple_language_serialization_framework.md",lastUpdated:170351429e4,description:"Author: chaokunyang"},f=[{id:"fury---a-blazing-fast-multi-language-se [...] +`,paraId:48,tocIndex:15},{value:"https://github.com/alipay/fury",paraId:48,tocIndex:15},{value:"Official website: ",paraId:49,tocIndex:15},{value:"https://furyio.org",paraId:49,tocIndex:15},{value:"All issues, PR, and Discussion are welcome.",paraId:50,tocIndex:15}],h={},y={title:"Join US",toc:"menu",filename:"docs/blog/fury_blazing_fast_multiple_language_serialization_framework.md",lastUpdated:1703515673e3,description:"Author: chaokunyang"},f=[{id:"fury---a-blazing-fast-multi-language-s [...] zero-copy`,paraId:1,tocIndex:0},{value:", providing up to ",paraId:1,tocIndex:0},{value:"170x performance",paraId:1,tocIndex:0},{value:" and ultimate ",paraId:1,tocIndex:0},{value:"ease of use",paraId:1,tocIndex:0},{value:".",paraId:1,tocIndex:0},{value:"The GitHub address of fury repository is: ",paraId:2,tocIndex:0},{value:"https://github.com/alipay/fury",paraId:2,tocIndex:0},{value:`Serialization is a basic component of system communication, and widely used in big data, AI framework, [...] other distributed systems. `,paraId:3,tocIndex:1},{value:`Data transfer between processes/languages/nodes, or object persistence, state read/write and @@ -250,7 +250,7 @@ development and discussion are open-sourced and transparent in the community. An including but not limited to questions, code contributions, technical discussions, etc. We are looking forward to receiving your ideas and feedback, participating in the project together, pushing the project forward and creating a better serialization framework.`,paraId:47,tocIndex:15},{value:`The GitHub address of the fury repository is: -`,paraId:48,tocIndex:15},{value:"https://github.com/alipay/fury",paraId:48,tocIndex:15},{value:"Official website: ",paraId:49,tocIndex:15},{value:"https://furyio.org",paraId:49,tocIndex:15},{value:"All issues, PR, and Discussion are welcome.",paraId:50,tocIndex:15}],I={},g={title:"Xlang Object Graph Guide",toc:"menu",filename:"docs/guide/xlang_object_graph_guide.zh.md",lastUpdated:170351429e4,order:2,description:"Common types can be serialized automatically: primitive numeric types, stri [...] +`,paraId:48,tocIndex:15},{value:"https://github.com/alipay/fury",paraId:48,tocIndex:15},{value:"Official website: ",paraId:49,tocIndex:15},{value:"https://furyio.org",paraId:49,tocIndex:15},{value:"All issues, PR, and Discussion are welcome.",paraId:50,tocIndex:15}],I={},g={title:"Xlang Object Graph Guide",toc:"menu",filename:"docs/guide/xlang_object_graph_guide.zh.md",lastUpdated:1703515673e3,order:2,description:"Common types can be serialized automatically: primitive numeric types, str [...] import java.util.*; @@ -616,7 +616,7 @@ func main() { fmt.Println(newList) } `,paraId:32,tocIndex:4},{value:"JavaScript",paraId:33,tocIndex:4},{value:`// Coming soon -`,paraId:34,tocIndex:4}],k={},w={title:"Java Object Graph Guide",toc:"menu",filename:"docs/guide/java_object_graph_guide.zh.md",lastUpdated:170351429e4,order:0,description:"When only java object serialization needed, this mode will have better performance compared to cross-language object graph serialization."},A=[{id:"java-object-graph-serialization",depth:1,title:"Java object graph serialization"},{id:"quick-start",depth:2,title:"Quick Start"},{id:"advanced-usage",depth:2,title:"Advanc [...] +`,paraId:34,tocIndex:4}],k={},w={title:"Java Object Graph Guide",toc:"menu",filename:"docs/guide/java_object_graph_guide.zh.md",lastUpdated:1703515673e3,order:0,description:"When only java object serialization needed, this mode will have better performance compared to cross-language object graph serialization."},A=[{id:"java-object-graph-serialization",depth:1,title:"Java object graph serialization"},{id:"quick-start",depth:2,title:"Quick Start"},{id:"advanced-usage",depth:2,title:"Advan [...] import java.util.Arrays; import io.fury.*; @@ -745,7 +745,7 @@ Object newObj = fury.execute( } else { return fury.deserialize(bytes); } -`,paraId:19,tocIndex:10}],R={},T={title:"Xlang Object Graph Guide",toc:"menu",filename:"docs/guide/xlang_object_graph_guide.md",lastUpdated:170351429e4,order:2,description:"Common types can be serialized automatically: primitive numeric types, string, binary, array, list, map and so on."},O=[{id:"cross-language-object-graph-serialization",depth:2,title:"Cross-language object graph serialization"},{id:"serialize-built-in-types",depth:3,title:"Serialize built-in types"},{id:"serialize-cust [...] +`,paraId:19,tocIndex:10}],R={},T={title:"Xlang Object Graph Guide",toc:"menu",filename:"docs/guide/xlang_object_graph_guide.md",lastUpdated:1703515673e3,order:2,description:"Common types can be serialized automatically: primitive numeric types, string, binary, array, list, map and so on."},O=[{id:"cross-language-object-graph-serialization",depth:2,title:"Cross-language object graph serialization"},{id:"serialize-built-in-types",depth:3,title:"Serialize built-in types"},{id:"serialize-cus [...] import io.fury.config.*; import java.util.*; @@ -1231,7 +1231,7 @@ func main() { fmt.Println(newList) } `,paraId:37,tocIndex:4},{value:"JavaScript",paraId:38,tocIndex:4},{value:`// Coming soon -`,paraId:39,tocIndex:4}],H={},W={title:"Java Object Graph Guide",toc:"menu",filename:"docs/guide/java_object_graph_guide.md",lastUpdated:170351429e4,order:0,description:`When only java object serialization needed, this mode will have better performance compared to cross-language object +`,paraId:39,tocIndex:4}],H={},W={title:"Java Object Graph Guide",toc:"menu",filename:"docs/guide/java_object_graph_guide.md",lastUpdated:1703515673e3,order:0,description:`When only java object serialization needed, this mode will have better performance compared to cross-language object graph serialization.`},K=[{id:"java-object-graph-serialization",depth:1,title:"Java object graph serialization"},{id:"quick-start",depth:2,title:"Quick Start"},{id:"advanced-usage",depth:2,title:"Advanced Usage"},{id:"furybuilder--options",depth:3,title:"FuryBuilder options"},{id:"fury-creation",depth:3,title:"Fury creation"},{id:"smaller-size",depth:3,title:"Smaller size"},{id:"implement-a-customized-serializer",depth:3,title:"Implement a customized serializer"},{id:"security--class-re [...] graph serialization.`,paraId:0,tocIndex:0},{value:"Note that fury creation is not cheap, the ",paraId:1,tocIndex:1},{value:"fury instances should be reused between serializations",paraId:1,tocIndex:1},{value:` instead of creating it everytime. @@ -1475,20 +1475,20 @@ package, and load fury by version.`,paraId:49,tocIndex:14},{value:`If you upgrad no need to `,paraId:50,tocIndex:14},{value:"versioning",paraId:50,tocIndex:14},{value:" the data.",paraId:50,tocIndex:14},{value:"If you create fury without setting ",paraId:51,tocIndex:16},{value:"CompatibleMode",paraId:51,tocIndex:16},{value:" to ",paraId:51,tocIndex:16},{value:"io.fury.config.CompatibleMode.COMPATIBLE",paraId:51,tocIndex:16},{value:`, and you got a strange serialization error, it may be caused by class inconsistency between serialization peer and deserialization peer.`,paraId:51,tocIndex:16},{value:"In such cases, you can invoke ",paraId:52,tocIndex:16},{value:"FuryBuilder#withClassVersionCheck",paraId:52,tocIndex:16},{value:" to create fury to validate it, if deserialization throws ",paraId:52,tocIndex:16},{value:"io.fury.exception.ClassNotCompatibleException",paraId:52,tocIndex:16},{value:`, it shows class are inconsistent, and you shoul [...] `,paraId:52,tocIndex:16},{value:"FuryBuilder#withCompaibleMode(CompatibleMode.COMPATIBLE)",paraId:52,tocIndex:16},{value:".",paraId:52,tocIndex:16},{value:"CompatibleMode.COMPATIBLE",paraId:53,tocIndex:16},{value:" has more performance and space cost, do not set it by default if your classes are always consistent between serialization and deserialization.",paraId:53,tocIndex:16},{value:"If you serialize an object by invoking ",paraId:54,tocIndex:17},{value:"Fury#serialize",paraId:54,tocI [...] -`,paraId:54,tocIndex:17},{value:"Fury#deserializeJavaObject",paraId:54,tocIndex:17},{value:".",paraId:54,tocIndex:17},{value:"If you serialize an object by invoking ",paraId:55,tocIndex:17},{value:"Fury#serializeJavaObject",paraId:55,tocIndex:17},{value:", you should invoke ",paraId:55,tocIndex:17},{value:"Fury#deserializeJavaObject",paraId:55,tocIndex:17},{value:" for deserialization instead of ",paraId:55,tocIndex:17},{value:"Fury#deserializeJavaObjectAndClass",paraId:55,tocIndex:17},{ [...] +`,paraId:54,tocIndex:17},{value:"Fury#deserializeJavaObject",paraId:54,tocIndex:17},{value:".",paraId:54,tocIndex:17},{value:"If you serialize an object by invoking ",paraId:55,tocIndex:17},{value:"Fury#serializeJavaObject",paraId:55,tocIndex:17},{value:", you should invoke ",paraId:55,tocIndex:17},{value:"Fury#deserializeJavaObject",paraId:55,tocIndex:17},{value:" for deserialization instead of ",paraId:55,tocIndex:17},{value:"Fury#deserializeJavaObjectAndClass",paraId:55,tocIndex:17},{ [...] multiple binary protocols for those requirements:`,paraId:1,tocIndex:0},{value:`Cross-language object graph protocol: `,paraId:2,tocIndex:0},{value:`Cross-language serialize any object automatically, no need for IDL definition, schema compilation and object to/from protocol conversion.`,paraId:3,tocIndex:0},{value:"Support shared reference and circular reference, no duplicate data or recursion error.",paraId:3,tocIndex:0},{value:"Support object polymorphism.",paraId:3,tocIndex:0},{value:"Native java/python object graph protocol: highly-optimized based on type system of the language.",paraId:2,tocIndex:0},{value:`Row format protocol: a cache-friendly binary random access format, supports skipping serialization and partial serialization, and can convert to column-format automatically.`,paraId:2,tocIndex:0},{value:`New protocols can be added easily based on fury existing buffer, encoding, meta, codegen and other capabilities. All of those share same codebase, and the optimization for one protocol -can be reused by another protocol.`,paraId:4,tocIndex:0},{value:"Fury java object graph serialization support class schema forward/backward compatibility. The serialization peer and deserialization peer can add/delete fields independently.",paraId:5,tocIndex:2},{value:"We plan to add support cross-language serialization after ",paraId:6,tocIndex:2},{value:"meta compression",paraId:6,tocIndex:2},{value:" are finished.",paraId:6,tocIndex:2},{value:"We are still improving our protocols, bin [...] +can be reused by another protocol.`,paraId:4,tocIndex:0},{value:"Fury java object graph serialization support class schema forward/backward compatibility. The serialization peer and deserialization peer can add/delete fields independently.",paraId:5,tocIndex:2},{value:"We plan to add support cross-language serialization after ",paraId:6,tocIndex:2},{value:"meta compression",paraId:6,tocIndex:2},{value:" are finished.",paraId:6,tocIndex:2},{value:"We are still improving our protocols, bin [...] `,paraId:1,tocIndex:0},{value:"\u901A\u8FC7\u5185\u8054\u53D8\u91CF\u51CF\u5C11\u5185\u5B58\u8BBF\u95EE\uFF1B",paraId:2,tocIndex:0},{value:"\u901A\u8FC7\u5728\u751F\u6210\u4EE3\u7801\u5F53\u4E2D\u5185\u8054\u65B9\u6CD5\u8C03\u7528\u51CF\u5C11\u865A\u65B9\u6CD5\u5F00\u9500\uFF1B",paraId:2,tocIndex:0},{value:"\u51CF\u5C11\u6761\u4EF6\u5206\u652F\uFF1B",paraId:2,tocIndex:0},{value:"\u68C0\u67E5hash\u67E5\u627E\uFF1B",paraId:2,tocIndex:0},{value:"\u591A\u4E2A\u4E8C\u8FDB\u5236\u534F\u8BAE",p [...] `,paraId:4,tocIndex:0},{value:"writeObject/readObject/writeReplace/readResolve/readObjectNoData",paraId:4,tocIndex:0},{value:"\u3002",paraId:4,tocIndex:0},{value:"\u652F\u6301Golang\u5171\u4EAB\u5F15\u7528\u3001\u5FAA\u73AF\u5F15\u7528\u3001\u6307\u9488\u5E8F\u5217\u5316\u3002",paraId:4,tocIndex:0},{value:"\u652F\u6301\u81EA\u52A8\u5316\u7684Golang struct\u5E8F\u5217\u5316\u3002",paraId:4,tocIndex:0},{value:"\u4E0D\u540C\u7684\u534F\u8BAE\u6709\u4E0D\u540C\u7684\u5E8F\u5217\u5316\u9700\u [...] `,paraId:6,tocIndex:1},{value:"\u8DE8\u8BED\u8A00\u81EA\u52A8\u5E8F\u5217\u5316\u4EFB\u610F\u5BF9\u8C61\uFF0C\u4E0D\u9700\u8981\u5B9A\u4E49IDL\uFF0C\u9759\u6001\u751F\u6210\u4EE3\u7801\uFF0C\u4EE5\u53CA\u5728\u5BF9\u8C61\u548C\u751F\u6210\u4EE3\u7801\u4E4B\u95F4\u8FDB\u884C\u8F6C\u6362\u3002",paraId:7,tocIndex:1},{value:"\u652F\u6301\u5171\u4EAB\u5F15\u7528\u548C\u5FAA\u73AF\u5F15\u7528\uFF0C\u4E0D\u4F1A\u51FA\u73B0\u91CD\u590D\u5E8F\u5217\u5316\u548C\u9012\u5F52\u9519\u8BEF\u3002",paraI [...] \u7684\u7C7B, `,paraId:12,tocIndex:3},{value:"Sample",paraId:12,tocIndex:3},{value:` \u662F\u6765\u81EA `,paraId:12,tocIndex:3},{value:"kryo benchmark",paraId:12,tocIndex:3},{value:` -\u7684\u7C7B.`,paraId:12,tocIndex:3},{value:"\u53EF\u4EE5\u8BBF\u95EE ",paraId:13,tocIndex:3},{value:"benchmarks",paraId:13,tocIndex:3},{value:" \u67E5\u770B\u57FA\u51C6\u6D4B\u8BD5\u73AF\u5883\u3001\u4EE3\u7801\u4EE5\u53CA\u96F6\u62F7\u8D1D\u548C\u5806\u5916\u5E8F\u5217\u5316\u7B49\u573A\u666F\u6D4B\u8BD5\u7ED3\u679C\u3002",paraId:13,tocIndex:3},{value:"Fury Java\u5E8F\u5217\u5316\u652F\u6301schema\u5411\u524D\u5411\u540E\u517C\u5BB9\u3002\u5E8F\u5217\u5316\u548C\u53CD\u5E8F\u5217\u5316 [...] +\u7684\u7C7B.`,paraId:12,tocIndex:3},{value:"\u53EF\u4EE5\u8BBF\u95EE ",paraId:13,tocIndex:3},{value:"benchmarks",paraId:13,tocIndex:3},{value:" \u67E5\u770B\u57FA\u51C6\u6D4B\u8BD5\u73AF\u5883\u3001\u4EE3\u7801\u4EE5\u53CA\u96F6\u62F7\u8D1D\u548C\u5806\u5916\u5E8F\u5217\u5316\u7B49\u573A\u666F\u6D4B\u8BD5\u7ED3\u679C\u3002",paraId:13,tocIndex:3},{value:"Fury Java\u5E8F\u5217\u5316\u652F\u6301schema\u5411\u524D\u5411\u540E\u517C\u5BB9\u3002\u5E8F\u5217\u5316\u548C\u53CD\u5E8F\u5217\u5316 [...] `,paraId:2,tocIndex:1},{value:"Dubbo fury integration: ",paraId:3,tocIndex:1},{value:"https://github.com/fury-project/dubbo-serialization-fury",paraId:3,tocIndex:1},{value:"Add class checker API to customize security check behaviour(#890)",paraId:3,tocIndex:1},{value:`Python -`,paraId:2,tocIndex:1},{value:"Support pyarrow6 bazel build (#859 #862)",paraId:4,tocIndex:1},{value:"Support python 3.10 (#859 #862)",paraId:4,tocIndex:1},{value:"[Java] Dubbo fury integration: ",paraId:5,tocIndex:2},{value:"https://github.com/fury-project/dubbo-serialization-fury",paraId:5,tocIndex:2},{value:"[Java] fix isSecure check for xlang in java (#822)",paraId:5,tocIndex:2},{value:"[Java] register empty object by default (#829)",paraId:5,tocIndex:2},{value:"[Java] upgrade guava [...] +`,paraId:2,tocIndex:1},{value:"Support pyarrow6 bazel build (#859 #862)",paraId:4,tocIndex:1},{value:"Support python 3.10 (#859 #862)",paraId:4,tocIndex:1},{value:"[Java] Dubbo fury integration: ",paraId:5,tocIndex:2},{value:"https://github.com/fury-project/dubbo-serialization-fury",paraId:5,tocIndex:2},{value:"[Java] fix isSecure check for xlang in java (#822)",paraId:5,tocIndex:2},{value:"[Java] register empty object by default (#829)",paraId:5,tocIndex:2},{value:"[Java] upgrade guava [...] `,paraId:3,tocIndex:2},{value:`val fury = Fury.builder() .withScalaOptimizationEnabled(true) // \u6700\u597D\u5173\u95ED\u8BE5\u5F00\u5173\uFF0C\u63D0\u524D\u6CE8\u518C\u7C7B\u578B @@ -1526,7 +1526,7 @@ println(fury.deserialize(fury.serialize(ColorEnum.Green))) println(fury.deserialize(fury.serialize(opt))) val opt1: Option[Long] = None println(fury.deserialize(fury.serialize(opt1))) -`,paraId:13,tocIndex:9},{value:"[Scala] \u652F\u6301\u4EFB\u610Fscala\u5BF9\u8C61\u5E8F\u5217\u5316\uFF0C\u5305\u62ECcase/object/tuple/string/collection/enum/basic \u7B49",paraId:14,tocIndex:10},{value:"[Scala] \u589E\u52A0fury scala \u5E8F\u5217\u5316\u7528\u6237\u6587\u6863\uFF1A",paraId:14,tocIndex:10},{value:"https://github.com/alipay/fury/blob/main/docs/guide/scala_guide.md",paraId:14,tocIndex:10},{value:"[Scala] \u5B9E\u73B0\u4F18\u5316\u7684scala object singleton\u5E8F\u5217\u5316 [...] +`,paraId:13,tocIndex:9},{value:"[Scala] \u652F\u6301\u4EFB\u610Fscala\u5BF9\u8C61\u5E8F\u5217\u5316\uFF0C\u5305\u62ECcase/object/tuple/string/collection/enum/basic \u7B49",paraId:14,tocIndex:10},{value:"[Scala] \u589E\u52A0fury scala \u5E8F\u5217\u5316\u7528\u6237\u6587\u6863\uFF1A",paraId:14,tocIndex:10},{value:"https://github.com/alipay/fury/blob/main/docs/guide/scala_guide.md",paraId:14,tocIndex:10},{value:"[Scala] \u5B9E\u73B0\u4F18\u5316\u7684scala object singleton\u5E8F\u5217\u5316 [...] String f1; List<Long> f2; } @@ -1626,25 +1626,25 @@ for (int i = 0; i < 10; i++) { arrowWriter.write(encoder.toRow(beanA)); } return arrowWriter.finishAsRecordBatch(); -`,paraId:9,tocIndex:3}],Xe={},ut={title:"Benchmark",toc:"menu",filename:"docs/introduction/benchmark.en.md",lastUpdated:170351429e4,order:1,description:"Different serialization frameworks are suitable for different scenarios, and benchmark results here are for reference only."},it=[{id:"java-serialization",depth:3,title:"Java Serialization"},{id:"java-deserialization",depth:3,title:"Java Deserialization"},{id:"javascript",depth:3,title:"JavaScript"}],jt=[{value:"Different serialization f [...] +`,paraId:9,tocIndex:3}],Xe={},ut={title:"Benchmark",toc:"menu",filename:"docs/introduction/benchmark.en.md",lastUpdated:1703515673e3,order:1,description:"Different serialization frameworks are suitable for different scenarios, and benchmark results here are for reference only."},it=[{id:"java-serialization",depth:3,title:"Java Serialization"},{id:"java-deserialization",depth:3,title:"Java Deserialization"},{id:"javascript",depth:3,title:"JavaScript"}],jt=[{value:"Different serialization [...] to static serialization frameworks, unless it uses the jit techniques as fury did. -Since fury will generate code at runtime, please warm up before collecting benchmark statistics.`,paraId:2},{value:"See ",paraId:3,tocIndex:1},{value:"benchmarks",paraId:3,tocIndex:1},{value:" for more benchmarks about type forward/backward compatibility, off-heap support, zero-copy serialization.",paraId:3,tocIndex:1},{value:"The data used for this bar graph includes a complex object that has many kinds of field types, and the size of the JSON data is 3KB.",paraId:4,tocIndex:2},{value:" [...] +Since fury will generate code at runtime, please warm up before collecting benchmark statistics.`,paraId:2},{value:"See ",paraId:3,tocIndex:1},{value:"benchmarks",paraId:3,tocIndex:1},{value:" for more benchmarks about type forward/backward compatibility, off-heap support, zero-copy serialization.",paraId:3,tocIndex:1},{value:"The data used for this bar graph includes a complex object that has many kinds of field types, and the size of the JSON data is 3KB.",paraId:4,tocIndex:2},{value:" [...] to static serialization frameworks, unless it uses the jit techniques as fury did. -Since fury will generate code at runtime, please warm up before collecting benchmark statistics.`,paraId:2},{value:"See ",paraId:3,tocIndex:1},{value:"benchmarks",paraId:3,tocIndex:1},{value:" for more benchmarks about type forward/backward compatibility, off-heap support, zero-copy serialization.",paraId:3,tocIndex:1},{value:"The data used for this bar graph includes a complex object that has many kinds of field types, and the size of the JSON data is 3KB.",paraId:4,tocIndex:2},{value:" [...] +Since fury will generate code at runtime, please warm up before collecting benchmark statistics.`,paraId:2},{value:"See ",paraId:3,tocIndex:1},{value:"benchmarks",paraId:3,tocIndex:1},{value:" for more benchmarks about type forward/backward compatibility, off-heap support, zero-copy serialization.",paraId:3,tocIndex:1},{value:"The data used for this bar graph includes a complex object that has many kinds of field types, and the size of the JSON data is 3KB.",paraId:4,tocIndex:2},{value:" [...] by `,paraId:0},{value:"pickle5",paraId:0},{value:" and off-heap read/write.",paraId:0},{value:`High performance: A highly-extensible JIT framework to generate serializer code at runtime in an async multi-thread way to speed serialization, providing 20-170x speed up by: `,paraId:0},{value:"reduce memory access by inline variable in generated code.",paraId:1},{value:"reduce virtual method invocation by inline call in generated code.",paraId:1},{value:"reduce conditional branching.",paraId:1},{value:"reduce hash lookup.",paraId:1},{value:"binary protocols: object graph, row format and so on.",paraId:1},{value:"In addition to cross-language serialization, Fury also features at:",paraId:2},{value:`Drop-in replace Java serialization frameworks such as JDK/Kr [...] It can greatly improve the efficiency of high-performance RPC calls, data transfer and object persistence.`,paraId:3},{value:`JDK serialization 100% compatible, support java custom serialization -`,paraId:3},{value:"writeObject/readObject/writeReplace/readResolve/readObjectNoData",paraId:3},{value:" natively.",paraId:3},{value:"Supports shared and circular reference object serialization for golang.",paraId:3},{value:"Supports automatic object serialization for golang.",paraId:3}],Qe={},At={title:"Features",toc:"menu",filename:"docs/introduction/features.zh.md",lastUpdated:170351429e4,order:2,description:"In addition to cross-language serialization, Fury also features at:"},Dt=[], [...] +`,paraId:3},{value:"writeObject/readObject/writeReplace/readResolve/readObjectNoData",paraId:3},{value:" natively.",paraId:3},{value:"Supports shared and circular reference object serialization for golang.",paraId:3},{value:"Supports automatic object serialization for golang.",paraId:3}],Qe={},At={title:"Features",toc:"menu",filename:"docs/introduction/features.zh.md",lastUpdated:1703515673e3,order:2,description:"In addition to cross-language serialization, Fury also features at:"},Dt=[] [...] by `,paraId:0},{value:"pickle5",paraId:0},{value:" and off-heap read/write.",paraId:0},{value:`High performance: A highly-extensible JIT framework to generate serializer code at runtime in an async multi-thread way to speed serialization, providing 20-170x speed up by: `,paraId:0},{value:"reduce memory access by inline variable in generated code.",paraId:1},{value:"reduce virtual method invocation by inline call in generated code.",paraId:1},{value:"reduce conditional branching.",paraId:1},{value:"reduce hash lookup.",paraId:1},{value:"binary protocols: object graph, row format and so on.",paraId:1},{value:"In addition to cross-language serialization, Fury also features at:",paraId:2},{value:`Drop-in replace Java serialization frameworks such as JDK/Kr [...] It can greatly improve the efficiency of high-performance RPC calls, data transfer and object persistence.`,paraId:3},{value:`JDK serialization 100% compatible, support java custom serialization -`,paraId:3},{value:"writeObject/readObject/writeReplace/readResolve/readObjectNoData",paraId:3},{value:" natively.",paraId:3},{value:"Supports shared and circular reference object serialization for golang.",paraId:3},{value:"Supports automatic object serialization for golang.",paraId:3}],ba={},La={title:"Fury v0.1.0 released",toc:"menu",filename:"docs/blog/fury_0_1_0_release.md",lastUpdated:170351429e4,description:"Author: chaokunyang"},Ba=[{id:"fury-v010-released",depth:1,title:"Fury v0 [...] +`,paraId:3},{value:"writeObject/readObject/writeReplace/readResolve/readObjectNoData",paraId:3},{value:" natively.",paraId:3},{value:"Supports shared and circular reference object serialization for golang.",paraId:3},{value:"Supports automatic object serialization for golang.",paraId:3}],ba={},La={title:"Fury v0.1.0 released",toc:"menu",filename:"docs/blog/fury_0_1_0_release.md",lastUpdated:1703515673e3,description:"Author: chaokunyang"},Ba=[{id:"fury-v010-released",depth:1,title:"Fury v [...] `,paraId:4,tocIndex:0},{value:"Highly optimized Java serialization primives",paraId:5,tocIndex:0},{value:"Runtime codegen framework",paraId:5,tocIndex:0},{value:"Interpreter mode java serialization",paraId:5,tocIndex:0},{value:"JIT accelerated serializer for java serialization",paraId:5,tocIndex:0},{value:"Support async and multi-thread JIT",paraId:5,tocIndex:0},{value:"Support type forward-backward compatibility.",paraId:5,tocIndex:0},{value:"Support meta sharing to send class meta only [...] `,paraId:4,tocIndex:0},{value:"Support basic types cross-language between java/python/javascript/rust",paraId:6,tocIndex:0},{value:"Support struct cross-language automatically, no need for IDL definition",paraId:6,tocIndex:0},{value:"Supports shared and circular reference object serialization between java/python/javascript.",paraId:6,tocIndex:0},{value:"Support object polymorphism between java/python/javascript.",paraId:6,tocIndex:0},{value:"Out-of-band zero-copy serialization between ja [...] `,paraId:4,tocIndex:0},{value:"Support row format between java/python/c++.",paraId:7,tocIndex:0},{value:"Support lazy/partial deserialization.",paraId:7,tocIndex:0},{value:"Support convert to arrow format automatically.",paraId:7,tocIndex:0},{value:`With this release, we take big strides towards our goal of making serialization fast, cross-language, unified and open. -For details, please refer to the following commit messages.`,paraId:8,tocIndex:0},{value:"Note that javascript/rust support is still experimental, please let us know if you have any issues.",paraId:9,tocIndex:0},{value:"@wangweipeng2 made their first contribution in ",paraId:10,tocIndex:1},{value:"https://github.com/alipay/fury/pull/215",paraId:10,tocIndex:1},{value:"@rainsonGain made their first contribution in ",paraId:10,tocIndex:1},{value:"https://github.com/alipay/fury/pull/429",par [...] +For details, please refer to the following commit messages.`,paraId:8,tocIndex:0},{value:"Note that javascript/rust support is still experimental, please let us know if you have any issues.",paraId:9,tocIndex:0},{value:"@wangweipeng2 made their first contribution in ",paraId:10,tocIndex:1},{value:"https://github.com/alipay/fury/pull/215",paraId:10,tocIndex:1},{value:"@rainsonGain made their first contribution in ",paraId:10,tocIndex:1},{value:"https://github.com/alipay/fury/pull/429",par [...] `,paraId:2,tocIndex:1},{value:"Dubbo fury integration: ",paraId:3,tocIndex:1},{value:"https://github.com/fury-project/dubbo-serialization-fury",paraId:3,tocIndex:1},{value:"Add class checker API to customize security check behaviour(#890)",paraId:3,tocIndex:1},{value:`Python -`,paraId:2,tocIndex:1},{value:"Support pyarrow6 bazel build (#859 #862)",paraId:4,tocIndex:1},{value:"Support python 3.10 (#859 #862)",paraId:4,tocIndex:1},{value:"[Java] Dubbo fury integration: ",paraId:5,tocIndex:2},{value:"https://github.com/fury-project/dubbo-serialization-fury",paraId:5,tocIndex:2},{value:"[Java] fix isSecure check for xlang in java (#822)",paraId:5,tocIndex:2},{value:"[Java] register empty object by default (#829)",paraId:5,tocIndex:2},{value:"[Java] upgrade guava [...] +`,paraId:2,tocIndex:1},{value:"Support pyarrow6 bazel build (#859 #862)",paraId:4,tocIndex:1},{value:"Support python 3.10 (#859 #862)",paraId:4,tocIndex:1},{value:"[Java] Dubbo fury integration: ",paraId:5,tocIndex:2},{value:"https://github.com/fury-project/dubbo-serialization-fury",paraId:5,tocIndex:2},{value:"[Java] fix isSecure check for xlang in java (#822)",paraId:5,tocIndex:2},{value:"[Java] register empty object by default (#829)",paraId:5,tocIndex:2},{value:"[Java] upgrade guava [...] `,paraId:4,tocIndex:1},{value:"Creating fury:",paraId:5,tocIndex:1},{value:`val fury = Fury.builder() .withScalaOptimizationEnabled(true) .requireClassRegistration(false) @@ -1666,8 +1666,8 @@ println(fury.deserialize(fury.serialize(list))) println(fury.deserialize(fury.serialize(map))) `,paraId:12,tocIndex:1},{value:"Serialize enum:",paraId:13,tocIndex:1},{value:`enum Color { case Red, Green, Blue } println(fury.deserialize(fury.serialize(Color.Green))) -`,paraId:14,tocIndex:1},{value:"[Scala] Support scala serialization: ",paraId:15,tocIndex:2},{value:"case/object/tuple/string/collection/enum/basic",paraId:15,tocIndex:2},{value:" all supported",paraId:15,tocIndex:2},{value:"[Scala] Add ",paraId:15,tocIndex:2},{value:"scala user documentation",paraId:15,tocIndex:2},{value:"[Scala] add optimized scala singleton object serializer",paraId:15,tocIndex:2},{value:"[Java] Make ",paraId:15,tocIndex:2},{value:"java.io.Externalizable",paraId:15,to [...] -Multiple scala serialization JIT optimization are included, and java serialization compatibility is improved too.`,paraId:1,tocIndex:0},{value:"Support python 3.11 and 3.12, drop python 3.6 support",paraId:2,tocIndex:1},{value:"Refactor collection serialization framework to support writeReplace JIT",paraId:2,tocIndex:1},{value:"Integrate scala collection with fury java collection framework",paraId:2,tocIndex:1},{value:"Support scala collection jit serialization",paraId:2,tocIndex:1},{val [...] +`,paraId:14,tocIndex:1},{value:"[Scala] Support scala serialization: ",paraId:15,tocIndex:2},{value:"case/object/tuple/string/collection/enum/basic",paraId:15,tocIndex:2},{value:" all supported",paraId:15,tocIndex:2},{value:"[Scala] Add ",paraId:15,tocIndex:2},{value:"scala user documentation",paraId:15,tocIndex:2},{value:"[Scala] add optimized scala singleton object serializer",paraId:15,tocIndex:2},{value:"[Java] Make ",paraId:15,tocIndex:2},{value:"java.io.Externalizable",paraId:15,to [...] +Multiple scala serialization JIT optimization are included, and java serialization compatibility is improved too.`,paraId:1,tocIndex:0},{value:"Support python 3.11 and 3.12, drop python 3.6 support",paraId:2,tocIndex:1},{value:"Refactor collection serialization framework to support writeReplace JIT",paraId:2,tocIndex:1},{value:"Integrate scala collection with fury java collection framework",paraId:2,tocIndex:1},{value:"Support scala collection jit serialization",paraId:2,tocIndex:1},{val [...] String f1; List<Long> f2; } @@ -1767,7 +1767,7 @@ for (int i = 0; i < 10; i++) { arrowWriter.write(encoder.toRow(beanA)); } return arrowWriter.finishAsRecordBatch(); -`,paraId:9,tocIndex:3}],ie={},Re={title:"GraalVM Guide",toc:"menu",filename:"docs/guide/graalvm_guide.md",lastUpdated:170351429e4,order:6,description:`GraalVM native image can compile java code into native code ahead to build faster, smaller, leaner applications. +`,paraId:9,tocIndex:3}],ie={},Re={title:"GraalVM Guide",toc:"menu",filename:"docs/guide/graalvm_guide.md",lastUpdated:1703515673e3,order:6,description:`GraalVM native image can compile java code into native code ahead to build faster, smaller, leaner applications. The native image doesn't have a JIT compiler to compile bytecode into machine code, and doesn't support reflection unless configure reflection file.`},Te=[{id:"graalvm-native-image",depth:1,title:"GraalVM Native Image"},{id:"not-thread-safe-fury",depth:2,title:"Not thread-safe Fury"},{id:"thread-safe-fury",depth:2,title:"Thread-safe Fury"},{id:"framework-integration",depth:2,title:"Framework Integration"},{id:"benchmark",depth:2,title:"Benchmark"},{id:"struct-benchmark",depth:3,title:"Struct Benchmark"},{id:"class-fields",depth:4,title:"Class Fields"},{id:"benchmark-results",depth:4,title: [...] The native image doesn't have a JIT compiler to compile bytecode into machine code, and doesn't support @@ -1910,7 +1910,7 @@ Fury serialization took mills: 1289 JDK serialization took mills: 15069 Compare speed: Fury is 12.11x speed of JDK Compare size: Fury is 0.48x size of JDK -`,paraId:30,tocIndex:10}],Ye={},Ot={title:"Development",toc:"menu",filename:"docs/guide/DEVELOPMENT.md",lastUpdated:170351429e4,order:6,description:"Github repo: https://github.com/alipay/fury"},pa=[{id:"how-to-build-to-fury",depth:1,title:"How to build to Fury"},{id:"get-the-source-code",depth:2,title:"Get the source code"},{id:"building-fury-\uFE0F",depth:2,title:"Building Fury \u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F"},{id:"building-fury-java",depth:3,title:"Building Fury Java"},{id:"envi [...] +`,paraId:30,tocIndex:10}],Ye={},Ot={title:"Development",toc:"menu",filename:"docs/guide/DEVELOPMENT.md",lastUpdated:1703515673e3,order:6,description:"Github repo: https://github.com/alipay/fury"},pa=[{id:"how-to-build-to-fury",depth:1,title:"How to build to Fury"},{id:"get-the-source-code",depth:2,title:"Get the source code"},{id:"building-fury-\uFE0F",depth:2,title:"Building Fury \u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F"},{id:"building-fury-java",depth:3,title:"Building Fury Java"},{id:"env [...] mvn clean compile -DskipTests `,paraId:1,tocIndex:3},{value:"java 1.8+",paraId:2,tocIndex:4},{value:"maven 3.6.3+",paraId:2,tocIndex:4},{value:`cd python pip install pyarrow==14.0.0 Cython wheel numpy pytest @@ -1929,7 +1929,7 @@ cargo build # run test cargo test `,paraId:12,tocIndex:11},{value:`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -`,paraId:13,tocIndex:12}],da={},ua={title:"Scala Serialization Guide",toc:"menu",filename:"docs/guide/scala_guide.md",lastUpdated:170351429e4,order:4,description:"Fury supports all scala object serialization:"},or=[{id:"scala-serialization",depth:1,title:"Scala serialization"},{id:"install",depth:2,title:"Install"},{id:"fury-creation",depth:2,title:"Fury creation"},{id:"serialize-case-object",depth:2,title:"Serialize case object"},{id:"serialize-pojo",depth:2,title:"Serialize pojo"},{id: [...] +`,paraId:13,tocIndex:12}],da={},ua={title:"Scala Serialization Guide",toc:"menu",filename:"docs/guide/scala_guide.md",lastUpdated:1703515673e3,order:4,description:"Fury supports all scala object serialization:"},or=[{id:"scala-serialization",depth:1,title:"Scala serialization"},{id:"install",depth:2,title:"Install"},{id:"fury-creation",depth:2,title:"Fury creation"},{id:"serialize-case-object",depth:2,title:"Serialize case object"},{id:"serialize-pojo",depth:2,title:"Serialize pojo"},{id [...] `,paraId:3,tocIndex:1},{value:"When using fury for scala serialization, you should create fury at least with following options:",paraId:4,tocIndex:2},{value:`val fury = Fury.builder() .withScalaOptimizationEnabled(true) .requireClassRegistration(false) @@ -1971,7 +1971,7 @@ println(fury.deserialize(fury.serialize(ColorEnum.Green))) println(fury.deserialize(fury.serialize(opt))) val opt1: Option[Long] = None println(fury.deserialize(fury.serialize(opt1))) -`,paraId:18,tocIndex:11},{value:"Scala ",paraId:19,tocIndex:12},{value:"pojo/bean/case/object",paraId:19,tocIndex:12},{value:" are supported by fury jit well, the performance is as good as fury java.",paraId:19,tocIndex:12},{value:"Scala collections and generics doesn't follow java collection framework, and is not fully integrated with Fury JIT in current release version. The performance won't be as good as fury collections serialization for java.",paraId:20,tocIndex:12},{value:"The exec [...] +`,paraId:18,tocIndex:11},{value:"Scala ",paraId:19,tocIndex:12},{value:"pojo/bean/case/object",paraId:19,tocIndex:12},{value:" are supported by fury jit well, the performance is as good as fury java.",paraId:19,tocIndex:12},{value:"Scala collections and generics doesn't follow java collection framework, and is not fully integrated with Fury JIT in current release version. The performance won't be as good as fury collections serialization for java.",paraId:20,tocIndex:12},{value:"The exec [...] <repository> <id>sonatype</id> <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> @@ -2019,7 +2019,7 @@ fury = { git= "https://github.com/alipay/fury.git", branch = "main" } fury_derive = { git= "https://github.com/alipay/fury.git", branch = "main" } lazy_static = { version = "1.4.0" } -`,paraId:8,tocIndex:5}],wr={},Go={title:"\u5B89\u88C5Fury",toc:"menu",filename:"docs/start/install.zh.md",lastUpdated:170351429e4,order:0,description:"Nightly\u5FEB\u7167\u7248\u672C:"},po=[{id:"java",depth:3,title:"Java"},{id:"scala",depth:3,title:"Scala"},{id:"python",depth:3,title:"Python"},{id:"javascript",depth:3,title:"JavaScript"},{id:"golang",depth:3,title:"Golang"},{id:"javascript-1",depth:3,title:"JavaScript"},{id:"rust",depth:3,title:"Rust"}],bo=[{value:"Nightly\u5FEB\u7167\u7 [...] +`,paraId:8,tocIndex:5}],wr={},Wo={title:"\u5B89\u88C5Fury",toc:"menu",filename:"docs/start/install.zh.md",lastUpdated:1703515673e3,order:0,description:"Nightly\u5FEB\u7167\u7248\u672C:"},po=[{id:"java",depth:3,title:"Java"},{id:"scala",depth:3,title:"Scala"},{id:"python",depth:3,title:"Python"},{id:"javascript",depth:3,title:"JavaScript"},{id:"golang",depth:3,title:"Golang"},{id:"javascript-1",depth:3,title:"JavaScript"},{id:"rust",depth:3,title:"Rust"}],bo=[{value:"Nightly\u5FEB\u7167\u [...] <repository> <id>sonatype</id> <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url> @@ -2067,7 +2067,7 @@ fury = { git= "https://github.com/alipay/fury.git", branch = "main" } fury_derive = { git= "https://github.com/alipay/fury.git", branch = "main" } lazy_static = { version = "1.4.0" } -`,paraId:9,tocIndex:6}],ki={},$i={title:"Usage",toc:"menu",filename:"docs/start/usage.en.md",lastUpdated:170351429e4,order:1},ui=[{id:"java-serialization",depth:2,title:"Java Serialization"},{id:"crosslanguage-serialization",depth:2,title:"CrossLanguage Serialization"},{id:"java",depth:3,title:"Java"},{id:"python",depth:3,title:"Python"},{id:"golang",depth:3,title:"Golang"},{id:"javascript",depth:3,title:"JavaScript"},{id:"rust",depth:3,title:"Rust"}],li=[{value:`import java.util.List; +`,paraId:9,tocIndex:6}],Ci={},Hi={title:"Usage",toc:"menu",filename:"docs/start/usage.en.md",lastUpdated:1703515673e3,order:1},ui=[{id:"java-serialization",depth:2,title:"Java Serialization"},{id:"crosslanguage-serialization",depth:2,title:"CrossLanguage Serialization"},{id:"java",depth:3,title:"Java"},{id:"python",depth:3,title:"Python"},{id:"golang",depth:3,title:"Golang"},{id:"javascript",depth:3,title:"JavaScript"},{id:"rust",depth:3,title:"Rust"}],li=[{value:`import java.util.List; import java.util.Arrays; import io.fury.*; @@ -2218,7 +2218,7 @@ fn main() { let obj: Person = from_buffer(&bin).expect("should success"); assert_eq!(obj, penson); } -`,paraId:5,tocIndex:6}],si={},Wo={title:"\u5FEB\u901F\u5F00\u59CB",toc:"menu",filename:"docs/start/usage.zh.md",lastUpdated:170351429e4,order:1,description:"\u4E0B\u9762\u662F\u4E00\u4E2A\u5982\u4F55\u4F7F\u7528Fury\u7684\u5FEB\u901F\u6307\u5357\uFF0C\u66F4\u591A\u4FE1\u606F\u8BF7\u67E5\u770B \u7528\u6237\u6307\u5357\uFF0C\u8DE8\u8BED\u8A00\u5E8F\u5217\u5316\u6307\u5357\uFF0C \u884C\u5B58\u6307\u5357."},Nn=[{id:"fury-java-\u5E8F\u5217\u5316",depth:3,title:"Fury Java \u5E8F\u5217\u5316"}, [...] +`,paraId:5,tocIndex:6}],si={},Ko={title:"\u5FEB\u901F\u5F00\u59CB",toc:"menu",filename:"docs/start/usage.zh.md",lastUpdated:1703515673e3,order:1,description:"\u4E0B\u9762\u662F\u4E00\u4E2A\u5982\u4F55\u4F7F\u7528Fury\u7684\u5FEB\u901F\u6307\u5357\uFF0C\u66F4\u591A\u4FE1\u606F\u8BF7\u67E5\u770B \u7528\u6237\u6307\u5357\uFF0C\u8DE8\u8BED\u8A00\u5E8F\u5217\u5316\u6307\u5357\uFF0C \u884C\u5B58\u6307\u5357."},Nn=[{id:"fury-java-\u5E8F\u5217\u5316",depth:3,title:"Fury Java \u5E8F\u5217\u5316"} [...] import java.util.*; @@ -2449,8 +2449,8 @@ foo = Foo(f1=10, f2=list(range(1000_000)), binary: bytes = encoder.to_row(foo).to_bytes() foo_row = pyfury.RowData(encoder.schema, binary) print(foo_row.f2[100000], foo_row.f4[100000].f1, foo_row.f4[200000].f2[5]) -`,paraId:12,tocIndex:6}],fo={},ru={title:'<font color="#d74633" face="Lato,Roboto,Arial,sans-serif">Fury - \u4E00\u4E2A\u57FA\u4E8EJIT\u548C\u96F6\u62F7\u8D1D\u7684\u9AD8\u6027\u80FD\u591A\u8BED\u8A00\u5E8F\u5217\u5316\u6846\u67B6</font>',toc:"menu",filename:"docs/blog/list.zh.md",lastUpdated:170351429e4,order:-1,description:`2023\u5E74 12\u67089\u53F7 -\u5F88\u9AD8\u5174\u5411\u5927\u5BB6\u53D1\u5E03Fury 0.4.1\u7248\u672C\uFF0C\u672C\u6B21\u53D1\u5E03\u91CD\u70B9\u65B0\u589E\u4E86 Fury \u884C\u5B58 Rust \u652F\u6301\uFF0C\u540C\u65F6\u5BF9Fury \u884C\u5B58 C++\u652F\u6301\u8FDB\u884C\u4E86\u5B8C\u5584\uFF0C\u652F\u6301\u53EF\u8FED\u4EE3\u7C7B\u578B\uFF0C\u6B22\u8FCE\u4F7F\u7528\uFF01`},Ci=[{id:"\u9879\u76EE\u65B0\u95FB\u548C\u535A\u5BA2",depth:1,title:"\u9879\u76EE\u65B0\u95FB\u548C\u535A\u5BA2"},{id:"fury-041-released",depth:1,title:" [...] +`,paraId:12,tocIndex:6}],fo={},ou={title:'<font color="#d74633" face="Lato,Roboto,Arial,sans-serif">Fury - \u4E00\u4E2A\u57FA\u4E8EJIT\u548C\u96F6\u62F7\u8D1D\u7684\u9AD8\u6027\u80FD\u591A\u8BED\u8A00\u5E8F\u5217\u5316\u6846\u67B6</font>',toc:"menu",filename:"docs/blog/list.zh.md",lastUpdated:1703515673e3,order:-1,description:`2023\u5E74 12\u67089\u53F7 +\u5F88\u9AD8\u5174\u5411\u5927\u5BB6\u53D1\u5E03Fury 0.4.1\u7248\u672C\uFF0C\u672C\u6B21\u53D1\u5E03\u91CD\u70B9\u65B0\u589E\u4E86 Fury \u884C\u5B58 Rust \u652F\u6301\uFF0C\u540C\u65F6\u5BF9Fury \u884C\u5B58 C++\u652F\u6301\u8FDB\u884C\u4E86\u5B8C\u5584\uFF0C\u652F\u6301\u53EF\u8FED\u4EE3\u7C7B\u578B\uFF0C\u6B22\u8FCE\u4F7F\u7528\uFF01`},Ti=[{id:"\u9879\u76EE\u65B0\u95FB\u548C\u535A\u5BA2",depth:1,title:"\u9879\u76EE\u65B0\u95FB\u548C\u535A\u5BA2"},{id:"fury-041-released",depth:1,title:" [...] \u5F88\u9AD8\u5174\u5411\u5927\u5BB6\u53D1\u5E03Fury 0.4.1\u7248\u672C\uFF0C\u672C\u6B21\u53D1\u5E03\u91CD\u70B9\u65B0\u589E\u4E86 Fury \u884C\u5B58 Rust \u652F\u6301\uFF0C\u540C\u65F6\u5BF9Fury \u884C\u5B58 C++\u652F\u6301\u8FDB\u884C\u4E86\u5B8C\u5584\uFF0C\u652F\u6301\u53EF\u8FED\u4EE3\u7C7B\u578B\uFF0C\u6B22\u8FCE\u4F7F\u7528\uFF01 `,paraId:2,tocIndex:1},{value:"Fury 0.4.0 Released",paraId:3,tocIndex:1},{value:"2023\u5E74 11\u670829\u53F7",paraId:4,tocIndex:2},{value:` \u5F88\u9AD8\u5174\u5411\u5927\u5BB6\u53D1\u5E03Fury 0.4.0\u7248\u672C\uFF0C\u672C\u6B21\u53D1\u5E03\u91CD\u70B9\u652F\u6301\u4E86 Graalvm native image\uFF0C\u57FA\u4E8E\u7F16\u8BD1\u65F6\u53CD\u5C04\u7684C++ Row Format Encoder\uFF0CScala\u5E8F\u5217\u5316\u517C\u5BB9\u6027\u6539\u8FDB\uFF0C\u6B22\u8FCE\u4F7F\u7528\uFF01 @@ -2469,8 +2469,8 @@ print(foo_row.f2[100000], foo_row.f4[100000].f1, foo_row.f4[200000].f2[5]) \u5927\u5BB6\u597D\uFF0C\u7ECF\u8FC7\u51E0\u4E2A\u6708\u7684\u52AA\u529B\uFF0CFury 0.1.0 \u7248\u672C\u6B63\u5F0F\u5BF9\u5916\u53D1\u5E03\u3002\u8FD9\u662F\u6211\u4EEC\u4ECA\u5E74\u56DB\u6708\u5E95\u6B63\u5F0F\u5728 GitHub \u5F00\u53D1\u30017 \u6708 15 \u53F7\u5BF9\u5916\u5F00\u6E90\u540E\u53D1\u5E03\u7684\u7B2C\u4E00\u4E2A\u7248\u672C\u3002\u8FD9\u4E00\u7248\u672C\u5305\u542B\u4E86\u5927\u91CF\u7279\u6027\uFF0C\u6B22\u8FCE\u5927\u5BB6\u4F7F\u7528\uFF0C\u5E0C\u671B\u80FD\u63D0\u4F9B\u5B9 [...] `,paraId:18,tocIndex:9},{value:"Fury - \u4E00\u4E2A\u57FA\u4E8EJIT\u548C\u96F6\u62F7\u8D1D\u7684\u9AD8\u6027\u80FD\u591A\u8BED\u8A00\u5E8F\u5217\u5316\u6846\u67B6",paraId:19,tocIndex:9},{value:"2023\u5E74 07\u670815\u53F7",paraId:20,tocIndex:10},{value:` Fury \u662F\u4E00\u4E2A\u57FA\u4E8E JIT \u52A8\u6001\u7F16\u8BD1\u548C\u96F6\u62F7\u8D1D\u7684\u591A\u8BED\u8A00\u5E8F\u5217\u5316\u6846\u67B6\uFF0C\u652F\u6301 Java/Python/Golang/JavaScript/C++ \u7B49\u8BED\u8A00\uFF0C\u63D0\u4F9B\u5168\u81EA\u52A8\u7684\u5BF9\u8C61\u591A\u8BED\u8A00 / \u8DE8\u8BED\u8A00\u5E8F\u5217\u5316\u80FD\u529B\uFF0C\u548C\u76F8\u6BD4 JDK \u6700\u9AD8 170 \u500D\u7684\u6027\u80FD\u3002 -`,paraId:0}],ci={},Hi={title:'<font color="#d74633" face="Lato,Roboto,Arial,sans-serif">Fury - A blazing fast multi-language serialization framework powered by jit and zero-copy</font>',toc:"menu",filename:"docs/blog/list.md",lastUpdated:170351429e4,order:-1,description:`9 Dec 2023 -I'm pleased to announce the 0.4.1 release of the Fury: https://github.com/alipay/fury/releases/tag/v0.4.1. With this release, Fury support rust row format now. C++ row format has been enhanced too, now iterable types can be encoded to fury row format. Please try it out and share your feedbacks with us.`},Ai=[{id:"project-news-and-blog",depth:1,title:"Project News and Blog"},{id:"fury-041-released",depth:1,title:"Fury 0.4.1 Released"},{id:"fury-040-released",depth:1,title:"Fury 0.4.0 Rele [...] +`,paraId:0}],ci={},Gi={title:'<font color="#d74633" face="Lato,Roboto,Arial,sans-serif">Fury - A blazing fast multi-language serialization framework powered by jit and zero-copy</font>',toc:"menu",filename:"docs/blog/list.md",lastUpdated:1703515673e3,order:-1,description:`9 Dec 2023 +I'm pleased to announce the 0.4.1 release of the Fury: https://github.com/alipay/fury/releases/tag/v0.4.1. With this release, Fury support rust row format now. C++ row format has been enhanced too, now iterable types can be encoded to fury row format. Please try it out and share your feedbacks with us.`},Oi=[{id:"project-news-and-blog",depth:1,title:"Project News and Blog"},{id:"fury-041-released",depth:1,title:"Fury 0.4.1 Released"},{id:"fury-040-released",depth:1,title:"Fury 0.4.0 Rele [...] I'm pleased to announce the 0.4.1 release of the Fury: `,paraId:2,tocIndex:1},{value:"https://github.com/alipay/fury/releases/tag/v0.4.1",paraId:2,tocIndex:1},{value:`. With this release, Fury support rust row format now. C++ row format has been enhanced too, now iterable types can be encoded to fury row format. Please try it out and share your feedbacks with us. `,paraId:2,tocIndex:1},{value:"Fury 0.4.0 Released",paraId:3,tocIndex:1},{value:"29 Nov 2023",paraId:4,tocIndex:2},{value:` I'm pleased to announce the 0.4.0 release of the Fury. With this release, `,paraId:4,tocIndex:2},{value:"GraalVM native image",paraId:4,tocIndex:2},{value:` and C++ row format automatic encoder based on compile-time reflection are supported. Please try it out and share your feedbacks with us. @@ -2491,14 +2491,14 @@ I'm pleased to announce the 0.1.1 release of the Fury. Fury 0.1.1 is our second I'm pleased to announce the 0.1.0 release of the Fury. Fury 0.1.0 is our first release since we started the development in github in 2023.04.28, and open sourced in 2023.07.15. This release includes many features: production-ready Java serialization, cross language serialization for Java/Python/JavaScript/Rust, row format support and so on. `,paraId:18,tocIndex:9},{value:"Fury - A blazing fast multi-language serialization framework powered by jit and zero-copy",paraId:19,tocIndex:9},{value:"15 July 2023",paraId:20,tocIndex:10},{value:` Fury is a multi-language serialization framework powered by JIT dynamic compilation and zero copy. It supports Java/Python/Golang/JavaScript/Rust/C++, provide automatic multi-language objects serialization features, and 170x speedup compared to JDK serialization. -`,paraId:20,tocIndex:10}],Oi=null,zo={},di={"docs/blog/fury_blazing_fast_multiple_language_serialization_framework.zh":{frontmatter:s,toc:l,texts:c,demos:u},"docs/blog/fury_blazing_fast_multiple_language_serialization_framework":{frontmatter:y,toc:f,texts:v,demos:h},"docs/guide/xlang_object_graph_guide.zh":{frontmatter:g,toc:x,texts:E,demos:I},"docs/guide/java_object_graph_guide.zh":{frontmatter:w,toc:A,texts:C,demos:k},"docs/guide/xlang_object_graph_guide":{frontmatter:T,toc:O,texts:M,d [...] +`,paraId:20,tocIndex:10}],Ri={},jo={title:"Docs",toc:"menu",filename:"docs/index.md",lastUpdated:1703515673e3},Pi=[],Fn=[],di=null,pi={},dn={"docs/blog/fury_blazing_fast_multiple_language_serialization_framework.zh":{frontmatter:s,toc:l,texts:c,demos:u},"docs/blog/fury_blazing_fast_multiple_language_serialization_framework":{frontmatter:y,toc:f,texts:v,demos:h},"docs/guide/xlang_object_graph_guide.zh":{frontmatter:g,toc:x,texts:E,demos:I},"docs/guide/java_object_graph_guide.zh":{frontmat [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Le=!0,He=!1,Ze;return{s:function(){Ne=Ne.call(be)},n:function(){var ot=Ne.next();return Le=ot.done,ot},e:function(ot){He=!0,Ze=ot},f:function(){try{!Le&&Ne.return!=null&&Ne.return()}finally{if(He)throw Ze}}}}function X(be){if(Array.isArray(be))return be}function ne(be){if(typeof Symbol!="undefined"&&be[Symbol.iterator]!=null||be["@@iterator"]!=null)return Array.from(be)}function B(){throw new TypeErr [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Z(be){return X(be)||ne(be)||ve(be)||B()}function $(be,ke){if(!(be instanceof ke))throw new TypeError("Cannot call a class as a function")}function S(be,ke){for(var Ne=0;Ne<ke.length;Ne++){var de=ke[Ne];de.enumerable=de.enumerable||!1,de.configurable=!0,"value"in de&&(de.writable=!0),Object.defineProperty(be,O(de.key),de)}}function j(be,ke,Ne){return ke&&S(be.prototype,ke),Ne&&S(be,Ne),Object.def [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _unsupportedIterableToArray(d,m){if(d){if(typeof d=="string")return _arrayLikeToArray(d,m);var e=Object.prototype.toString.call(d).slice(8,-1);if(e==="Object"&&d.constructor&&(e=d.constructor.name),e==="Map"||e==="Set")return Array.from(d);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return _arrayLikeToArray(d,m)}}function _arrayLikeToArray(d,m){(m==null||m>d.length)&&( [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Z(be){return X(be)||ne(be)||ve(be)||B()}function $(be,ke){if(!(be instanceof ke))throw new TypeError("Cannot call a class as a function")}function S(be,ke){for(var Ne=0;Ne<ke.length;Ne++){var de=ke[Ne];de.enumerable=de.enumerable||!1,de.configurable=!0,"value"in de&&(de.writable=!0),Object.defineProperty(be,O(de.key),de)}}function j(be,ke,Ne){return ke&&S(be.prototype,ke),Ne&&S(be,Ne),Object.def [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function _unsupportedIterableToArray(d,m){if(d){if(typeof d=="string")return _arrayLikeToArray(d,m);var e=Object.prototype.toString.call(d).slice(8,-1);if(e==="Object"&&d.constructor&&(e=d.constructor.name),e==="Map"||e==="Set")return Array.from(d);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return _arrayLikeToArray(d,m)}}function _arrayLikeToArray(d,m){(m==null||m>d.length)&&( [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function O(z,L){if(z){if(typeof z=="string")return M(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return M(z,L)}}function M(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}funct [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function X(z,L){if(z){if(typeof z=="string")return ne(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return ne(z,L)}}function ne(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}fu [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function U(z,L){if(z){if(typeof z=="string")return J(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return J(z,L)}}function J(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}funct [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ft(z,L){if(z){if(typeof z=="string")return yt(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return yt(z,L)}}function yt(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function U(z,L){if(z){if(typeof z=="string")return J(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return J(z,L)}}function J(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}funct [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ft(z,L){if(z){if(typeof z=="string")return yt(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return yt(z,L)}}function yt(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] <html> <head><title></title></head> <body> @@ -2509,12 +2509,12 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Kn(z,L){if(z){if(typeof z=="string")return fr(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return fr(z,L)}}function fr(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Ke=!0,Ve=!1,at;return{s:function(){N=N.call(z)},n:function(){var lt=N.next();return Ke=lt.done,lt},e:function(lt){Ve=!0,at=lt},f:function(){try{!Ke&&N.return!=null&&N.return()}finally{if(Ve)throw at}}}}function Kr(z){return Fr(z)||cn(z)||re(z)||no()}function no(){throw new TypeError(`Invalid attempt to spread non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function cn(z){if(typeof Symbol!="undefined"&&z[Symbol.iterator]!=null||z["@@iterator"]!=null)return Array.from(z)}function Fr(z){if(Array.isArray(z))return _e(z)}function Vn(z,L){return ie(z)||pe(z,L)||re(z,L)||bn()}function bn(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function re(z,L){if(z){if(typeof z=="string")return _e(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return _e(z,L)}}function _e(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ya(z){if(typeof Symbol!="undefined"&&z[Symbol.iterator]!=null||z["@@iterator"]!=null)return Array.from(z)}function ma(z){if(Array.isArray(z))return wr(z)}function Aa(z,L){return po(z)||Go(z,L)||Mr(z,L)||Qa()}function Qa(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Mr(z,L){if(z){if(typeof z=="string")return wr(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return wr(z,L)}}function wr(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ru(z,L){if(z){if(typeof z=="string")return Ci(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return Ci(z,L)}}function Ci(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Vo(z,L){if(z){if(typeof z=="string")return Mo(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return Mo(z,L)}}function Mo(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Hu(z,L){if(z){if(typeof z=="string")return uu(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return uu(z,L)}}function uu(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function re(z,L){if(z){if(typeof z=="string")return _e(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return _e(z,L)}}function _e(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ya(z){if(typeof Symbol!="undefined"&&z[Symbol.iterator]!=null||z["@@iterator"]!=null)return Array.from(z)}function ma(z){if(Array.isArray(z))return wr(z)}function Aa(z,L){return po(z)||Wo(z,L)||Mr(z,L)||Qa()}function Qa(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Mr(z,L){if(z){if(typeof z=="string")return wr(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return wr(z,L)}}function wr(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ou(z,L){if(z){if(typeof z=="string")return Ti(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return Ti(z,L)}}function Ti(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function fi(z,L){if(z){if(typeof z=="string")return Do(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return Do(z,L)}}function Do(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Hu(z,L){if(z){if(typeof z=="string")return lu(z,L);var N=Object.prototype.toString.call(z).slice(8,-1);if(N==="Object"&&z.constructor&&(N=z.constructor.name),N==="Map"||N==="Set")return Array.from(z);if(N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N))return lu(z,L)}}function lu(z,L){(L==null||L>z.length)&&(L=z.length);for(var N=0,fe=new Array(L);N<L;N++)fe[N]=z[N];return fe}f [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function s(f,v){if(f){if(typeof f=="string")return l(f,v);var I=Object.prototype.toString.call(f).slice(8,-1);if(I==="Object"&&f.constructor&&(I=f.constructor.name),I==="Map"||I==="Set")return Array.from(f);if(I==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(I))return l(f,v)}}function l(f,v){(v==null||v>f.length)&&(v=f.length);for(var I=0,g=new Array(v);I<v;I++)g[I]=f[I];return g}function [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function c(C,R){if(C){if(typeof C=="string")return h(C,R);var T=Object.prototype.toString.call(C).slice(8,-1);if(T==="Object"&&C.constructor&&(T=C.constructor.name),T==="Map"||T==="Set")return Array.from(C);if(T==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(T))return h(C,R)}}function h(C,R){(R==null||R>C.length)&&(R=C.length);for(var T=0,O=new Array(R);T<R;T++)O[T]=C[T];return O}function [...] * This is an auto-generated demo by dumi @@ -2540,34 +2540,34 @@ ReactDOM.render( <App />, document.getElementById('root'), );`)},E=typeof window!="undefined"?r.useLayoutEffect:r.useEffect,k=function(){var R=(0,o.b)();return(0,r.useCallback)(function(T,O){return("order"in T&&"order"in O?T.order-O.order:0)||("link"in T&&"link"in O?T.link.split("/").length-O.link.split("/").length:0)||("path"in T&&"path"in O?T.path.split("/").length-O.path.split("/").length:0)||(T.title?T.title.localeCompare(O.title||"",R.id):-1)},[])},w=function(R,T,O){var M,H=T==="nav.second"?u(O.nav)==="object"?O.nav.second:{}:O[T];switch(u( [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S(oe,ye){if(oe){if(typeof oe=="string")return j(oe,ye);var le=Object.prototype.toString.call(oe).slice(8,-1);if(le==="Object"&&oe.constructor&&(le=oe.constructor.name),le==="Map"||le==="Set")return Array.from(oe);if(le==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(le))return j(oe,ye)}}function j(oe,ye){(ye==null||ye>oe.length)&&(ye=oe.length);for(var le=0,me=new Array(ye);le<ye; [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function S(oe,ye){if(oe){if(typeof oe=="string")return j(oe,ye);var le=Object.prototype.toString.call(oe).slice(8,-1);if(le==="Object"&&oe.constructor&&(le=oe.constructor.name),le==="Map"||le==="Set")return Array.from(oe);if(le==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(le))return j(oe,ye)}}function j(oe,ye){(ye==null||ye>oe.length)&&(ye=oe.length);for(var le=0,me=new Array(ye);le<ye; [...] html body { overflow-y: hidden; `.concat(ge?"width: calc(100% - ".concat(Ie,"px);"):"",` -}`),ue)}else(0,me.jL)(ue);return function(){(0,me.jL)(ue)}},[F,ue])}var bt=!1;function zt(D){return typeof D=="boolean"&&(bt=D),bt}var be=function(F){return F===!1?!1:!(0,q.Z)()||!F?null:typeof F=="string"?document.querySelector(F):typeof F=="function"?F():F},ke=l.forwardRef(function(D,F){var G=D.open,ce=D.autoLock,ue=D.getContainer,Ie=D.debug,ge=D.autoDestroy,Oe=ge===void 0?!0:ge,Be=D.children,Ge=l.useState(G),gt=(0,S.Z)(Ge,2),tt=gt[0],vt=gt[1],mt=tt||G;l.useEffect(function(){(Oe||G)&&v [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Zn(D,F){if(D){if(typeof D=="string")return zi(D,F);var G=Object.prototype.toString.call(D).slice(8,-1);if(G==="Object"&&D.constructor&&(G=D.constructor.name),G==="Map"||G==="Set")return Array.from(D);if(G==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(G))return zi(D,F)}}function zi(D,F){(F==null||F>D.length)&&(F=D.length);for(var G=0,ce=new Array(F);G<F;G++)ce[G]=D[G];return ce}f [...] +}`),ue)}else(0,me.jL)(ue);return function(){(0,me.jL)(ue)}},[F,ue])}var xt=!1;function zt(D){return typeof D=="boolean"&&(xt=D),xt}var be=function(F){return F===!1?!1:!(0,q.Z)()||!F?null:typeof F=="string"?document.querySelector(F):typeof F=="function"?F():F},ke=l.forwardRef(function(D,F){var G=D.open,ce=D.autoLock,ue=D.getContainer,Ie=D.debug,ge=D.autoDestroy,Oe=ge===void 0?!0:ge,Be=D.children,Ge=l.useState(G),gt=(0,S.Z)(Ge,2),tt=gt[0],vt=gt[1],mt=tt||G;l.useEffect(function(){(Oe||G)&&v [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Zn(D,F){if(D){if(typeof D=="string")return ji(D,F);var G=Object.prototype.toString.call(D).slice(8,-1);if(G==="Object"&&D.constructor&&(G=D.constructor.name),G==="Map"||G==="Set")return Array.from(D);if(G==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(G))return ji(D,F)}}function ji(D,F){(F==null||F>D.length)&&(F=D.length);for(var G=0,ce=new Array(F);G<F;G++)ce[G]=D[G];return ce}f [...] `,empty:!0}):me.length===1&&me[0].content===""&&(me[0].content=` -`,me[0].empty=!0)},ve=function(me,Ae){var ze=me.length;return ze>0&&me[ze-1]===Ae?me:me.concat(Ae)},ee=function(me){for(var Ae=[[]],ze=[me],ft=[0],yt=[me.length],dt=0,bt=0,zt=[],be=[zt];bt>-1;){for(;(dt=ft[bt]++)<yt[bt];){var ke=void 0,Ne=Ae[bt],de=ze[bt],xe=de[dt];if(typeof xe=="string"?(Ne=bt>0?Ne:["plain"],ke=xe):(Ne=ve(Ne,xe.type),xe.alias&&(Ne=ve(Ne,xe.alias)),ke=xe.content),typeof ke!="string"){bt++,Ae.push(Ne),ze.push(ke),ft.push(0),yt.push(ke.length);continue}var Le=ke.split(ae), [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function q(me,Ae){if(me){if(typeof me=="string")return U(me,Ae);var ze=Object.prototype.toString.call(me).slice(8,-1);if(ze==="Object"&&me.constructor&&(ze=me.constructor.name),ze==="Map"||ze==="Set")return Array.from(me);if(ze==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(ze))return U(me,Ae)}}function U(me,Ae){(Ae==null||Ae>me.length)&&(Ae=me.length);for(var ze=0,ft=new Array(Ae);ze<Ae; [...] +`,me[0].empty=!0)},ve=function(me,Ae){var ze=me.length;return ze>0&&me[ze-1]===Ae?me:me.concat(Ae)},ee=function(me){for(var Ae=[[]],ze=[me],ft=[0],yt=[me.length],dt=0,xt=0,zt=[],be=[zt];xt>-1;){for(;(dt=ft[xt]++)<yt[xt];){var ke=void 0,Ne=Ae[xt],de=ze[xt],xe=de[dt];if(typeof xe=="string"?(Ne=xt>0?Ne:["plain"],ke=xe):(Ne=ve(Ne,xe.type),xe.alias&&(Ne=ve(Ne,xe.alias)),ke=xe.content),typeof ke!="string"){xt++,Ae.push(Ne),ze.push(ke),ft.push(0),yt.push(ke.length);continue}var Le=ke.split(ae), [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function q(me,Ae){if(me){if(typeof me=="string")return U(me,Ae);var ze=Object.prototype.toString.call(me).slice(8,-1);if(ze==="Object"&&me.constructor&&(ze=me.constructor.name),ze==="Map"||ze==="Set")return Array.from(me);if(ze==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(ze))return U(me,Ae)}}function U(me,Ae){(Ae==null||Ae>me.length)&&(Ae=me.length);for(var ze=0,ft=new Array(Ae);ze<Ae; [...] `+Y+t}var U=!1;function J(t,a){if(!t||U)return"";U=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(a)if(a=function(){throw Error()},Object.defineProperty(a.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(a,[])}catch(Fe){var p=Fe}Reflect.construct(t,[],a)}else{try{a.call()}catch(Fe){p=Fe}t.call(a.prototype)}else{try{throw Error()}catch(Fe){p=Fe}t()}}catch(Fe){if(Fe&&p&&typeof Fe.stack=="string"){f [...] `),P=p.stack.split(` `),V=_.length-1,se=P.length-1;1<=V&&0<=se&&_[V]!==P[se];)se--;for(;1<=V&&0<=se;V--,se--)if(_[V]!==P[se]){if(V!==1||se!==1)do if(V--,se--,0>se||_[V]!==P[se]){var Se=` -`+_[V].replace(" at new "," at ");return t.displayName&&Se.includes("<anonymous>")&&(Se=Se.replace("<anonymous>",t.displayName)),Se}while(1<=V&&0<=se);break}}}finally{U=!1,Error.prepareStackTrace=i}return(t=t?t.displayName||t.name:"")?q(t):""}function te(t){switch(t.tag){case 5:return q(t.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return t=J(t.type,!1),t;case 11:return t=J(t.type.render,!1),t;case 1:return t=J(t.type [...] -`).replace(Ca,"")}function fa(t,a,i){if(a=ga(a),ga(t)!==a&&i)throw Error(o(425))}function Xa(){}var Oa=null,Ir=null;function tr(t,a){return t==="textarea"||t==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var Sr=typeof setTimeout=="function"?setTimeout:void 0,Yr=typeof clearTimeout=="function"?clearTimeout:void 0,_r=typeof Promise=="function"?Promi [...] +`+_[V].replace(" at new "," at ");return t.displayName&&Se.includes("<anonymous>")&&(Se=Se.replace("<anonymous>",t.displayName)),Se}while(1<=V&&0<=se);break}}}finally{U=!1,Error.prepareStackTrace=i}return(t=t?t.displayName||t.name:"")?q(t):""}function te(t){switch(t.tag){case 5:return q(t.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return t=J(t.type,!1),t;case 11:return t=J(t.type.render,!1),t;case 1:return t=J(t.type [...] +`).replace(Ca,"")}function fa(t,a,i){if(a=ga(a),ga(t)!==a&&i)throw Error(o(425))}function Xa(){}var Oa=null,Ir=null;function tr(t,a){return t==="textarea"||t==="noscript"||typeof a.children=="string"||typeof a.children=="number"||typeof a.dangerouslySetInnerHTML=="object"&&a.dangerouslySetInnerHTML!==null&&a.dangerouslySetInnerHTML.__html!=null}var Sr=typeof setTimeout=="function"?setTimeout:void 0,Yr=typeof clearTimeout=="function"?clearTimeout:void 0,_r=typeof Promise=="function"?Promi [...] Error generating stack: `+P.message+` -`+P.stack}return{value:t,source:a,stack:_}}function $l(t,a){try{console.error(a.value)}catch(i){setTimeout(function(){throw i})}}var Fc=typeof WeakMap=="function"?WeakMap:Map;function Ls(t,a,i){i=Tr(-1,i),i.tag=3,i.payload={element:null};var p=a.value;return i.callback=function(){bl||(bl=!0,as=p),$l(t,a)},i}function Ns(t,a,i){i=Tr(-1,i),i.tag=3;var p=t.type.getDerivedStateFromError;if(typeof p=="function"){var _=a.value;i.payload=function(){return p(_)},i.callback=function(){$l(t,a)}}var [...] +`+P.stack}return{value:t,source:a,stack:_}}function $l(t,a){try{console.error(a.value)}catch(i){setTimeout(function(){throw i})}}var Fc=typeof WeakMap=="function"?WeakMap:Map;function Ls(t,a,i){i=Tr(-1,i),i.tag=3,i.payload={element:null};var p=a.value;return i.callback=function(){bl||(bl=!0,as=p),$l(t,a)},i}function Ns(t,a,i){i=Tr(-1,i),i.tag=3;var p=t.type.getDerivedStateFromError;if(typeof p=="function"){var _=a.value;i.payload=function(){return p(_)},i.callback=function(){$l(t,a)}}var [...] `,"\\r":"\r","\\t":" "},f=/^[\da-f]{4}$/i,v=/^[\u0000-\u001F]$/;d.exports=function(I,g){for(var x=!0,E="";g<I.length;){var k=l(I,g);if(k=="\\"){var w=c(I,g,g+2);if(r(y,w))E+=y[w],g+=2;else if(w=="\\u"){g+=2;var A=c(I,g,g+4);if(!h(f,A))throw o("Bad Unicode escape at: "+g);E+=s(u(A,16)),g+=4}else throw o('Unknown escape sequence: "'+w+'"')}else if(k=='"'){x=!1,g++;break}else{if(h(v,k))throw o("Bad control character in string literal at: "+g);E+=k,g++}}if(x)throw o("Unterminated string at: [...] `;break;case"v":C+="\v";break;case"f":C+="\f";break;case"r":C+="\r";break;case"\r":T<A.length&&s(A,T)===` `&&++T;case` `:case"\u2028":case"\u2029":break;case"0":if(E(A,T))return;C+="\0";break;case"x":if(O=k(A,T,T+2),O===-1)return;T+=2,C+=o(O);break;case"u":if(T<A.length&&s(A,T)==="{"){var H=c(A,"}",++T);if(H===-1)return;O=k(A,T,H),T=H+1}else O=k(A,T,T+4),T+=4;if(O===-1||O>1114111)return;C+=u(O);break;default:if(E(M,0))return;C+=M}R=T}return C+h(A,R)}},53111:function(d,m,e){var n=e(1702),r=e(84488),o=e(41340),u=e(81361),s=n("".replace),l=RegExp("^["+u+"]+"),c=RegExp("(^|[^"+u+"])["+u+"]+$"),h=function(y){ [...] -\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`},89191:function(d,m,e){"use strict";var n=e(35005),r=e(92597),o=e(68880),u=e(47976),s=e(27674),l=e(99920),c=e(2626),h=e(79587),y=e(56277),f=e(58340),v=e(5392),I=e(19781),g=e(31913);d.exports=function(x,E,k,w){var A="stackTraceLimit",C=w?2:1,R=x.split("."),T=R[R.length-1],O=n.apply(null,R);if(O){var M=O.prototype;if(!g&&r(M,"cause")&&delete M.cause,!k)return O;var H=n(" [...] +\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`},89191:function(d,m,e){"use strict";var n=e(35005),r=e(92597),o=e(68880),u=e(47976),s=e(27674),l=e(99920),c=e(2626),h=e(79587),y=e(56277),f=e(58340),v=e(5392),I=e(19781),g=e(31913);d.exports=function(x,E,k,w){var A="stackTraceLimit",C=w?2:1,R=x.split("."),T=R[R.length-1],O=n.apply(null,R);if(O){var M=O.prototype;if(!g&&r(M,"cause")&&delete M.cause,!k)return O;var H=n(" [...] Try polyfilling it using "@formatjs/intl-pluralrules" `,r.jK.MISSING_INTL_API,g);var ae=y.getPluralRules(h,{type:w.pluralType}).select(C-(w.offset||0));K=w.options[ae]||w.options.other}if(!K)throw new r.C8(w.value,C,Object.keys(w.options),g);x.push.apply(x,l(K.value,h,y,f,v,C-(w.offset||0)));continue}}return u(x)}},41143:function(d){"use strict";var m=function(e,n,r,o,u,s,l,c){if(!e){var h;if(n===void 0)h=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings." [...] ?| -|(?![\\s\\S])))+`,"m"),alias:l,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(u)[0]}}}}),Object.defineProperty(r.languages.diff,"PREFIXES",{value:o})}(n),n.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},n.languages.go=n.languages.extend("clike",{stri [...] +|(?![\\s\\S])))+`,"m"),alias:l,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(u)[0]}}}}),Object.defineProperty(r.languages.diff,"PREFIXES",{value:o})}(n),n.languages.git={comment:/^#.*/m,deleted:/^[-–].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},n.languages.go=n.languages.extend("clike",{stri [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}d.exports=m,d.exports.__esModule=!0,d.exports.default=d.exports},97857:function(d,m,e){var n=e(9783);function r(u,s){var l=Object.keys(u);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(u);s&&(c=c.filter(function(h){return Object.getOwnPropertyDescriptor(u,h).enumerable})),l.push.apply(l,c)}return l}function o(u){for(var s=1;s<arguments.length;s++){var l=arguments[s]!=null?arguments[s [...] In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}},1413:function(d,m,e){"use strict";e.d(m,{Z:function(){return o}});var n=e(4942);function r(u,s){var l=Object.keys(u);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(u);s&&(c=c.filter(function(h){return Object.getOwnPropertyDescriptor(u,h).enumerable})),l.push.apply(l,c)}return l}function o(u){for(var s=1;s<arguments.length;s++){var l=arguments[s]!=null?arguments[s]:{};s%2?r(Object(l [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function l(c){return r(c)||(0,o.Z)(c)||(0,u.Z)(c)||s()}},83997:function(d,m,e){"use strict";e.d(m,{Z:function(){return o}});var n=e(71002);function r(u,s){if((0,n.Z)(u)!="object"||!u)return u;var l=u[Symbol.toPrimitive];if(l!==void 0){var c=l.call(u,s||"default");if((0,n.Z)(c)!="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(s==="string"?String:Number)(u)}func [...] -(`+v+")");I.code="CSS_CHUNK_LOAD_FAILED",I.type=f,I.request=v,c.parentNode.removeChild(c),l(I)}};return c.onerror=c.onload=h,c.href=o,u?u.parentNode.insertBefore(c,u.nextSibling):document.head.appendChild(c),c},m=function(r,o){for(var u=document.getElementsByTagName("link"),s=0;s<u.length;s++){var l=u[s],c=l.getAttribute("data-href")||l.getAttribute("href");if(l.rel==="stylesheet"&&(c===r||c===o))return l}for(var h=document.getElementsByTagName("style"),s=0;s<h.length;s++){var l=h[s],c=l [...] -(`+y+": "+f+")",l.name="ChunkLoadError",l.type=y,l.request=f,o[1](l)}};__webpack_require__.l(s,c,"chunk-"+n,n)}};var m=function(n,r){var o=r[0],u=r[1],s=r[2],l,c,h=0;if(o.some(function(f){return d[f]!==0})){for(l in u)__webpack_require__.o(u,l)&&(__webpack_require__.m[l]=u[l]);if(s)var y=s(__webpack_require__)}for(n&&n(r);h<o.length;h++)c=o[h],__webpack_require__.o(d,c)&&d[c]&&d[c][0](),d[c]=0},e=self.webpackChunkfury_site=self.webpackChunkfury_site||[];e.forEach(m.bind(null,0)),e.push=m [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Rr(nt,D){return sa(nt)||Ja(nt,D)||er(nt,D)||Zr()}var wt=__webpack_require__(62435),vo=__webpack_require__(6915),Dr=__webpack_require__(20057),Lo=__webpack_require__(34162);function Zo(nt){var D=nt.id,F=nt.basename,G=nt.cb,ce=new URLSearchParams({route:D,url:window.location.href}).toString(),ue="".concat(lu(F),"__serverLoader?").concat(ce);fetch(ue,{credentials:"include"}).then(function(Ie){retur [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function l(c){return r(c)||(0,o.Z)(c)||(0,u.Z)(c)||s()}},83997:function(d,m,e){"use strict";e.d(m,{Z:function(){return o}});var n=e(71002);function r(u,s){if((0,n.Z)(u)!="object"||!u)return u;var l=u[Symbol.toPrimitive];if(l!==void 0){var c=l.call(u,s||"default");if((0,n.Z)(c)!="object")return c;throw new TypeError("@@toPrimitive must return a primitive value.")}return(s==="string"?String:Number)(u)}func [...] +(`+v+")");I.code="CSS_CHUNK_LOAD_FAILED",I.type=f,I.request=v,c.parentNode.removeChild(c),l(I)}};return c.onerror=c.onload=h,c.href=o,u?u.parentNode.insertBefore(c,u.nextSibling):document.head.appendChild(c),c},m=function(r,o){for(var u=document.getElementsByTagName("link"),s=0;s<u.length;s++){var l=u[s],c=l.getAttribute("data-href")||l.getAttribute("href");if(l.rel==="stylesheet"&&(c===r||c===o))return l}for(var h=document.getElementsByTagName("style"),s=0;s<h.length;s++){var l=h[s],c=l [...] +(`+y+": "+f+")",l.name="ChunkLoadError",l.type=y,l.request=f,o[1](l)}};__webpack_require__.l(s,c,"chunk-"+n,n)}};var m=function(n,r){var o=r[0],u=r[1],s=r[2],l,c,h=0;if(o.some(function(f){return d[f]!==0})){for(l in u)__webpack_require__.o(u,l)&&(__webpack_require__.m[l]=u[l]);if(s)var y=s(__webpack_require__)}for(n&&n(r);h<o.length;h++)c=o[h],__webpack_require__.o(d,c)&&d[c]&&d[c][0](),d[c]=0},e=self.webpackChunkfury_site=self.webpackChunkfury_site||[];e.forEach(m.bind(null,0)),e.push=m [...] +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Rr(nt,D){return sa(nt)||Ja(nt,D)||er(nt,D)||Zr()}var It=__webpack_require__(62435),vo=__webpack_require__(6915),Dr=__webpack_require__(20057),No=__webpack_require__(34162);function Zo(nt){var D=nt.id,F=nt.basename,G=nt.cb,ce=new URLSearchParams({route:D,url:window.location.href}).toString(),ue="".concat(su(F),"__serverLoader?").concat(ce);fetch(ue,{credentials:"include"}).then(function(Ie){retur [...] diff --git a/zh/blog/fury_0_1_0_release/index.html b/zh/blog/fury_0_1_0_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_1_0_release/index.html +++ b/zh/blog/fury_0_1_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_1_1_release/index.html b/zh/blog/fury_0_1_1_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_1_1_release/index.html +++ b/zh/blog/fury_0_1_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_1_2_release/index.html b/zh/blog/fury_0_1_2_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_1_2_release/index.html +++ b/zh/blog/fury_0_1_2_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_2_0_release/index.html b/zh/blog/fury_0_2_0_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_2_0_release/index.html +++ b/zh/blog/fury_0_2_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_2_1_release/index.html b/zh/blog/fury_0_2_1_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_2_1_release/index.html +++ b/zh/blog/fury_0_2_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_3_0_release/index.html b/zh/blog/fury_0_3_0_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_3_0_release/index.html +++ b/zh/blog/fury_0_3_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_3_1_release/index.html b/zh/blog/fury_0_3_1_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_3_1_release/index.html +++ b/zh/blog/fury_0_3_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_4_0_release/index.html b/zh/blog/fury_0_4_0_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_4_0_release/index.html +++ b/zh/blog/fury_0_4_0_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_0_4_1_release/index.html b/zh/blog/fury_0_4_1_release/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_0_4_1_release/index.html +++ b/zh/blog/fury_0_4_1_release/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html b/zh/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html index f6537e9..a34c132 100644 --- a/zh/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html +++ b/zh/blog/fury_blazing_fast_multiple_language_serialization_framework/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/blog/list/index.html b/zh/blog/list/index.html index f6537e9..a34c132 100644 --- a/zh/blog/list/index.html +++ b/zh/blog/list/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/guide/java_object_graph_guide/index.html b/zh/guide/java_object_graph_guide/index.html index f6537e9..a34c132 100644 --- a/zh/guide/java_object_graph_guide/index.html +++ b/zh/guide/java_object_graph_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/guide/row_format_guide/index.html b/zh/guide/row_format_guide/index.html index f6537e9..a34c132 100644 --- a/zh/guide/row_format_guide/index.html +++ b/zh/guide/row_format_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/guide/xlang_object_graph_guide/index.html b/zh/guide/xlang_object_graph_guide/index.html index f6537e9..a34c132 100644 --- a/zh/guide/xlang_object_graph_guide/index.html +++ b/zh/guide/xlang_object_graph_guide/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/introduction/benchmark/index.html b/zh/introduction/benchmark/index.html index f6537e9..a34c132 100644 --- a/zh/introduction/benchmark/index.html +++ b/zh/introduction/benchmark/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/introduction/features/index.html b/zh/introduction/features/index.html index f6537e9..a34c132 100644 --- a/zh/introduction/features/index.html +++ b/zh/introduction/features/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/introduction/introduction/index.html b/zh/introduction/introduction/index.html index f6537e9..a34c132 100644 --- a/zh/introduction/introduction/index.html +++ b/zh/introduction/introduction/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/start/install/index.html b/zh/start/install/index.html index f6537e9..a34c132 100644 --- a/zh/start/install/index.html +++ b/zh/start/install/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/zh/start/usage/index.html b/zh/start/usage/index.html index f6537e9..a34c132 100644 --- a/zh/start/usage/index.html +++ b/zh/start/usage/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ No newline at end of file diff --git a/~demos/:id/index.html b/~demos/:id/index.html index f6537e9..a34c132 100644 --- a/~demos/:id/index.html +++ b/~demos/:id/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.39c9eede.js"></script> +<script src="/umi.8f9af598.js"></script> </body></html> \ 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