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 a6cabfe deploy: 504113d18936826226d2cea91dbddf920b785039 a6cabfe is described below commit a6cabfebaa557715b9b3a7920d0f6d59cb9b02e0 Author: PragmaTwice <pragmatw...@users.noreply.github.com> AuthorDate: Mon Dec 25 14:26:52 2023 +0000 deploy: 504113d18936826226d2cea91dbddf920b785039 --- 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 +- 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 +- 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.51f73f40.js => umi.39c9eede.js | 162 ++++++++++----------- 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 +- 44 files changed, 124 insertions(+), 124 deletions(-) diff --git a/404.html b/404.html index e71e1a9..f6537e9 100644 --- a/404.html +++ b/404.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/blog/list/index.html b/blog/list/index.html index e71e1a9..f6537e9 100644 --- a/blog/list/index.html +++ b/blog/list/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/guide/development/index.html b/guide/development/index.html index e71e1a9..f6537e9 100644 --- a/guide/development/index.html +++ b/guide/development/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/introduction/benchmark/index.html b/introduction/benchmark/index.html index e71e1a9..f6537e9 100644 --- a/introduction/benchmark/index.html +++ b/introduction/benchmark/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/introduction/features/index.html b/introduction/features/index.html index e71e1a9..f6537e9 100644 --- a/introduction/features/index.html +++ b/introduction/features/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/introduction/introduction/index.html b/introduction/introduction/index.html index e71e1a9..f6537e9 100644 --- a/introduction/introduction/index.html +++ b/introduction/introduction/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/start/install/index.html b/start/install/index.html index e71e1a9..f6537e9 100644 --- a/start/install/index.html +++ b/start/install/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/start/usage/index.html b/start/usage/index.html index e71e1a9..f6537e9 100644 --- a/start/usage/index.html +++ b/start/usage/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/umi.51f73f40.js b/umi.39c9eede.js similarity index 53% rename from umi.51f73f40.js rename to umi.39c9eede.js index 57b7031..0c93292 100644 --- a/umi.51f73f40.js +++ b/umi.39c9eede.js @@ -1,23 +1,23 @@ -(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 [...] Locale: `).concat(g,` -`),x)||this;return E.locale=g,E}return v}(o),y=function(f){(0,n.ZT)(v,f);function v(I,g,x,E){var k=f.call(this,"".concat(I,` +`),x)||this;return E.locale=g,E}return v}(o),h=function(f){(0,n.ZT)(v,f);function v(I,g,x,E){var k=f.call(this,"".concat(I,` 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),h=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" -`,kt.jK.MISSING_INTL_API));try{return fa(oe,_e,ze).format(pe,le)}catch(We){oe.onError(new De.Qe("Error formatting relative time.",oe.locale,We))}return String(pe)}var Ue=["formatMatcher","timeZone","hour12","weekday","era","year","month","day","hour","minute","second","timeZoneName","hourCycle","dateStyle","timeStyle","calendar","numberingSystem","fractionalSecondDigits"];function Xe(oe,_e,pe,le){var ze=oe.locale,Ae=oe.formats,We=oe.onError,Ye=oe.timeZone;le===void 0&&(le={});var Tt=le.f [...] +`,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" -`,kt.jK.MISSING_INTL_API));var We=(0,b.L6)(le,Oa);try{return _e(ze,We).select(pe)}catch(Ye){Ae(new De.Qe("Error formatting plural.",ze,Ye))}return"other"}var Qa=["type","style"],Wa=Date.now();function Ka(oe){return"".concat(Wa,"_").concat(oe,"_").concat(Wa)}function sn(oe,_e,pe,le){le===void 0&&(le={});var ze=cn(oe,_e,pe,le).reduce(function(Ae,We){var Ye=We.value;return typeof Ye!="string"?Ae.push(Ye):typeof Ae[Ae.length-1]=="string"?Ae[Ae.length-1]+=Ye:Ae.push(Ye),Ae},[]);return ze.leng [...] +`,Tt.jK.MISSING_INTL_API));var We=(0,b.L6)(ie,Ba);try{return _e(Re,We).select(pe)}catch(Ye){Te(new Me.Qe("Error formatting plural.",Re,Ye))}return"other"}var Na=["type","style"],Ma=Date.now();function Ha(re){return"".concat(Ma,"_").concat(re,"_").concat(Ma)}function un(re,_e,pe,ie){ie===void 0&&(ie={});var Re=ln(re,_e,pe,ie).reduce(function(Te,We){var Ye=We.value;return typeof Ye!="string"?Te.push(Ye):typeof Te[Te.length-1]=="string"?Te[Te.length-1]+=Ye:Te.push(Ye),Te},[]);return Re.leng [...] Try polyfilling it using "@formatjs/intl-listformat" -`,kt.jK.MISSING_INTL_API));var Ye=(0,b.L6)(le,Qa);try{var Tt={},da=pe.map(function(aa,sa){if(typeof aa=="object"){var ca=Ka(sa);return Tt[ca]=aa,ca}return String(aa)});return _e(ze,Ye).formatToParts(da).map(function(aa){return aa.type==="literal"?aa:(0,Q.pi)((0,Q.pi)({},aa),{value:Tt[aa.value]||aa.value})})}catch(aa){Ae(new De.Qe("Error formatting list.",ze,aa))}return pe}var pr=["style","type","fallback","languageDisplay"];function rr(oe,_e,pe,le){var ze=oe.locale,Ae=oe.onError,We=Intl. [...] +`,Tt.jK.MISSING_INTL_API));var Ye=(0,b.L6)(ie,Na);try{var Ot={},pa=pe.map(function(ia,da){if(typeof ia=="object"){var ua=Ha(da);return Ot[ua]=ia,ua}return String(ia)});return _e(Re,Ye).formatToParts(pa).map(function(ia){return ia.type==="literal"?ia:(0,Q.pi)((0,Q.pi)({},ia),{value:Ot[ia.value]||ia.value})})}catch(ia){Te(new Me.Qe("Error formatting list.",Re,ia))}return pe}var pr=["style","type","fallback","languageDisplay"];function Wr(re,_e,pe,ie){var Re=re.locale,Te=re.onError,We=Intl. [...] Try polyfilling it using "@formatjs/intl-displaynames" -`,kt.jK.MISSING_INTL_API));var Ye=(0,b.L6)(le,pr);try{return _e(ze,Ye).of(pe)}catch(Tt){Ae(new De.Qe("Error formatting display name.",ze,Tt))}}function cr(oe){var _e=oe?oe[Object.keys(oe)[0]]:void 0;return typeof _e=="string"}function dn(oe){oe.onWarn&&oe.defaultRichTextElements&&cr(oe.messages||{})&&oe.onWarn(`[@formatjs/intl] "defaultRichTextElements" was specified but "message" was not pre-compiled. +`,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 Xa(oe,_e){var pe=(0,b.ax)(_e),le=(0,Q.pi)((0,Q.pi)({},b.Z0),oe),ze=le.locale,Ae=le.defaultLocale,We=le.onError;return ze?!Intl.NumberFormat.supportedLocalesOf(ze).length&&We?We(new De.gb('Missing locale data for locale: "'.concat(ze,'" in Intl.NumberFormat. Using default locale: "').concat(Ae,'" 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}],y={},h={title:"Join US",toc:"menu",filename:"docs/blog/fury_blazing_fast_multiple_language_serialization_framework.md",lastUpdated:1703512111e3,description:"Author: chaokunyang"},f=[{id:"fury---a-blazing-fast-multi-language-s [...] +`,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 [...] 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:1703512111e3,order:2,description:"Common types can be serialized automatically: primitive numeric types, str [...] +`,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 [...] 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:1703512111e3,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 [...] +`,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 [...] 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:1703512111e3,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 [...] +`,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 [...] import io.fury.config.*; import java.util.*; @@ -1231,8 +1231,8 @@ func main() { fmt.Println(newList) } `,paraId:37,tocIndex:4},{value:"JavaScript",paraId:38,tocIndex:4},{value:`// Coming soon -`,paraId:39,tocIndex:4}],G={},W={title:"Java Object Graph Guide",toc:"menu",filename:"docs/guide/java_object_graph_guide.md",lastUpdated:1703512111e3,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 [...] +`,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 +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. You should keep fury to a static global variable, or instance variable of some singleton object or limited objects.`,paraId:1,tocIndex:1},{value:"Fury for single-thread usage:",paraId:2,tocIndex:1},{value:`import java.util.List; @@ -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}],qe={},ut={title:"Benchmark",toc:"menu",filename:"docs/introduction/benchmark.en.md",lastUpdated:1703512111e3,order:1,description:"Different serialization frameworks are suitable for different scenarios, and benchmark results here are for reference only."},ot=[{id:"java-serialization",depth:3,title:"Java Serialization"},{id:"java-deserialization",depth:3,title:"Java Deserialization"},{id:"javascript",depth:3,title:"JavaScript"}],Rt=[{value:"Different serialization [...] +`,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 [...] 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}],Xe={},Ct={title:"Features",toc:"menu",filename:"docs/introduction/features.zh.md",lastUpdated:1703512111e3,order:2,description:"In addition to cross-language serialization, Fury also features at:"},Lt=[] [...] +`,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=[], [...] 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:1703512111e3,description:"Author: chaokunyang"},Oa=[{id:"fury-v010-released",depth:1,title:"Fury v [...] +`,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: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,9 +1767,9 @@ for (int i = 0; i < 10; i++) { arrowWriter.write(encoder.toRow(beanA)); } return arrowWriter.finishAsRecordBatch(); -`,paraId:9,tocIndex:3}],le={},ze={title:"GraalVM Guide",toc:"menu",filename:"docs/guide/graalvm_guide.md",lastUpdated:1703512111e3,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:170351429e4,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.`},Ae=[{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: [...] +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 reflection unless configure reflection file.`,paraId:0,tocIndex:0},{value:"Fury runs on GraalVM native image pretty well. Fury generates all serializer code for ",paraId:1,tocIndex:0},{value:"Fury JIT framework",paraId:1,tocIndex:0},{value:" and ",paraId:1,tocIndex:0},{value:"MethodHandle/LambdaMetafactory",paraId:1,tocIndex:0},{value:` at graalvm build time. Then use those generated code for serialization at runtime without any extra cost, the performance is great.`,paraId:1,tocIndex:0},{value:"In order to use Fury on graalvm native image, you must create Fury as an ",paraId:2,tocIndex:0},{value:"static",paraId:2,tocIndex:0},{value:" field of a class, and ",paraId:2,tocIndex:0},{value:"register",paraId:2,tocIndex:0},{value:` all classes at @@ -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={},Tt={title:"Development",toc:"menu",filename:"docs/guide/DEVELOPMENT.md",lastUpdated:1703512111e3,order:6,description:"Github repo: https://github.com/alipay/fury"},da=[{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 [...] +`,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 [...] 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}],sa={},ca={title:"Scala Serialization Guide",toc:"menu",filename:"docs/guide/scala_guide.md",lastUpdated:1703512111e3,order:4,description:"Fury supports all scala object serialization:"},nr=[{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: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: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}],vr={},Ao={title:"\u5B89\u88C5Fury",toc:"menu",filename:"docs/start/install.zh.md",lastUpdated:1703512111e3,order:0,description:"Nightly\u5FEB\u7167\u7248\u672C:"},io=[{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"}],Oo=[{value:"Nightly\u5FEB\u7167\u [...] +`,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 [...] <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}],Zi={},ui={title:"Usage",toc:"menu",filename:"docs/start/usage.en.md",lastUpdated:1703512111e3,order:1},$o=[{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"}],ji=[{value:`import java.util.List; +`,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; 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}],Ho={},Go={title:"\u5FEB\u901F\u5F00\u59CB",toc:"menu",filename:"docs/start/usage.zh.md",lastUpdated:1703512111e3,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."},xn=[{id:"fury-java-\u5E8F\u5217\u5316",depth:3,title:"Fury Java \u5E8F\u5217\u5316"} [...] +`,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"}, [...] 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}],Wo={},Yi={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:1703512111e3,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`},Mi=[{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={},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:" [...] \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}],li={},Di={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:1703512111e3,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.`},si=[{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={},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 [...] 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,32 +2491,32 @@ 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}],Ei=null,Ro={},ki={"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:h,toc:f,texts:v,demos:y},"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 [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Be=!0,Ge=!1,Ze;return{s:function(){Ne=Ne.call(be)},n:function(){var nt=Ne.next();return Be=nt.done,nt},e:function(nt){Ge=!0,Ze=nt},f:function(){try{!Be&&Ne.return!=null&&Ne.return()}finally{if(Ge)throw Ze}}}}function X(be){if(Array.isArray(be))return be}function ie(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)||ie(be)||ve(be)||B()}function H(be,Ce){if(!(be instanceof Ce))throw new TypeError("Cannot call a class as a function")}function S(be,Ce){for(var Ne=0;Ne<Ce.length;Ne++){var de=Ce[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,Ce,Ne){return Ce&&S(be.prototype,Ce),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,D){if(z){if(typeof z=="string")return M(z,D);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,D)}}function M(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;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,D){if(z){if(typeof z=="string")return ie(z,D);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 ie(z,D)}}function ie(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;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,D){if(z){if(typeof z=="string")return J(z,D);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,D)}}function J(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;N++)fe[N]=z[N];return fe}funct [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function pt(z,D){if(z){if(typeof z=="string")return ft(z,D);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 ft(z,D)}}function ft(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;N++)fe[N]=z[N];return fe}f [...] +`,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 [...] +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 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 [...] <html> <head><title></title></head> <body> `.concat(N.outerHTML,` <script>document.getElementById('`).concat(N.id,`').submit();<\/script> </body> -</html>`);return fe}function Ka(z,D){var N=Qa(z);N.action=xa("/run",D),N.target=Ue(D),document.body.appendChild(N),N.submit(),document.body.removeChild(N)}function sn(z){var D;if(!(z!=null&&z.contentWindow))return Promise.reject("Provided element is not an iframe.");var N=(D=La(z))!==null&&D!==void 0?D:new ba(z);return N.pending}function cn(z,D){Ka(z,D)}function pr(z,D){var N=xa("/edit/".concat(z),D),fe=Ue(D);window.open(N,fe)}function rr(z,D){var N=xa("/github/".concat(z),D),fe=Ue(D);wi [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Vr(z,D){if(z){if(typeof z=="string")return Jr(z,D);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 Jr(z,D)}}function Jr(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;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,rt;return{s:function(){N=N.call(z)},n:function(){var st=N.next();return Ke=st.done,st},e:function(st){Ve=!0,rt=st},f:function(){try{!Ke&&N.return!=null&&N.return()}finally{if(Ve)throw rt}}}}function tn(z){return Nn(z)||fn(z)||oe(z)||Tr()}function Tr(){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 fn(z){if(typeof Symbol!="undefined"&&z[Symbol.iterator]!=null||z["@@iterator"]!=null)return Array.from(z)}function Nn(z){if(Array.isArray(z))return _e(z)}function Hn(z,D){return le(z)||pe(z,D)||oe(z,D)||Gn()}function Gn(){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 oe(z,D){if(z){if(typeof z=="string")return _e(z,D);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,D)}}function _e(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;N++)fe[N]=z[N];return fe}f [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ja(z){if(typeof Symbol!="undefined"&&z[Symbol.iterator]!=null||z["@@iterator"]!=null)return Array.from(z)}function wa(z){if(Array.isArray(z))return vr(z)}function Na(z,D){return io(z)||Ao(z,D)||Mr(z,D)||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,D){if(z){if(typeof z=="string")return vr(z,D);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 vr(z,D)}}function vr(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;N++)fe[N]=z[N];return fe}f [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Yi(z,D){if(z){if(typeof z=="string")return Mi(z,D);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 Mi(z,D)}}function Mi(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;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,D){if(z){if(typeof z=="string")return zo(z,D);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 zo(z,D)}}function zo(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;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,D){if(z){if(typeof z=="string")return hu(z,D);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 hu(z,D)}}function hu(z,D){(D==null||D>z.length)&&(D=z.length);for(var N=0,fe=new Array(D);N<D;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 y(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 y(C,R)}}function y(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 [...] +</html>`);return fe}function Ha(z,L){var N=Na(z);N.action=xa("/run",L),N.target=$e(L),document.body.appendChild(N),N.submit(),document.body.removeChild(N)}function un(z){var L;if(!(z!=null&&z.contentWindow))return Promise.reject("Provided element is not an iframe.");var N=(L=La(z))!==null&&L!==void 0?L:new ba(z);return N.pending}function ln(z,L){Ha(z,L)}function pr(z,L){var N=xa("/edit/".concat(z),L),fe=$e(L);window.open(N,fe)}function Wr(z,L){var N=xa("/github/".concat(z),L),fe=$e(L);wi [...] +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 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 * if you think it is not working as expected, * please report the issue at @@ -2539,35 +2539,35 @@ import App from './App'; 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,G=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(ue,ye){if(ue){if(typeof ue=="string")return j(ue,ye);var se=Object.prototype.toString.call(ue).slice(8,-1);if(se==="Object"&&ue.constructor&&(se=ue.constructor.name),se==="Map"||se==="Set")return Array.from(ue);if(se==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(se))return j(ue,ye)}}function j(ue,ye){(ye==null||ye>ue.length)&&(ye=ue.length);for(var se=0,me=new Array(ye);se<ye; [...] +);`)},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; [...] html body { overflow-y: hidden; `.concat(ge?"width: calc(100% - ".concat(Ie,"px);"):"",` -}`),ae)}else(0,me.jL)(ae);return function(){(0,me.jL)(ae)}},[L,ae])}var It=!1;function Ot($){return typeof $=="boolean"&&(It=$),It}var be=function(L){return L===!1?!1:!(0,q.Z)()||!L?null:typeof L=="string"?document.querySelector(L):typeof L=="function"?L():L},Ce=l.forwardRef(function($,L){var F=$.open,te=$.autoLock,ae=$.getContainer,Ie=$.debug,ge=$.autoDestroy,ke=ge===void 0?!0:ge,Me=$.children,He=l.useState(F),vt=(0,S.Z)(He,2),Qe=vt[0],gt=vt[1],yt=Qe||F;l.useEffect(function(){(ke||F)&&g [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Vu($,L){if($){if(typeof $=="string")return Du($,L);var F=Object.prototype.toString.call($).slice(8,-1);if(F==="Object"&&$.constructor&&(F=$.constructor.name),F==="Map"||F==="Set")return Array.from($);if(F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F))return Du($,L)}}function Du($,L){(L==null||L>$.length)&&(L=$.length);for(var F=0,te=new Array(L);F<L;F++)te[F]=$[F];return te}f [...] +}`),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 [...] `,empty:!0}):me.length===1&&me[0].content===""&&(me[0].content=` -`,me[0].empty=!0)},ve=function(me,Oe){var Pe=me.length;return Pe>0&&me[Pe-1]===Oe?me:me.concat(Oe)},ee=function(me){for(var Oe=[[]],Pe=[me],pt=[0],ft=[me.length],dt=0,It=0,Ot=[],be=[Ot];It>-1;){for(;(dt=pt[It]++)<ft[It];){var Ce=void 0,Ne=Oe[It],de=Pe[It],xe=de[dt];if(typeof xe=="string"?(Ne=It>0?Ne:["plain"],Ce=xe):(Ne=ve(Ne,xe.type),xe.alias&&(Ne=ve(Ne,xe.alias)),Ce=xe.content),typeof Ce!="string"){It++,Oe.push(Ne),Pe.push(Ce),pt.push(0),ft.push(Ce.length);continue}var Be=Ce.split(ne), [...] -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function q(me,Oe){if(me){if(typeof me=="string")return U(me,Oe);var Pe=Object.prototype.toString.call(me).slice(8,-1);if(Pe==="Object"&&me.constructor&&(Pe=me.constructor.name),Pe==="Map"||Pe==="Set")return Array.from(me);if(Pe==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(Pe))return U(me,Oe)}}function U(me,Oe){(Oe==null||Oe>me.length)&&(Oe=me.length);for(var Pe=0,pt=new Array(Oe);Pe<Oe; [...] +`,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; [...] `+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,ce=P.length-1;1<=V&&0<=ce&&_[V]!==P[ce];)ce--;for(;1<=V&&0<=ce;V--,ce--)if(_[V]!==P[ce]){if(V!==1||ce!==1)do if(V--,ce--,0>ce||_[V]!==P[ce]){var we=` -`+_[V].replace(" at new "," at ");return t.displayName&&we.includes("<anonymous>")&&(we=we.replace("<anonymous>",t.displayName)),we}while(1<=V&&0<=ce);break}}}finally{U=!1,Error.prepareStackTrace=i}return(t=t?t.displayName||t.name:"")?q(t):""}function re(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(ua,"")}function Ca(t,a,i){if(a=ja(a),ja(t)!==a&&i)throw Error(o(425))}function yr(){}var or=null,Er=null;function Lr(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 Ir=typeof setTimeout=="function"?setTimeout:void 0,dr=typeof clearTimeout=="function"?clearTimeout:void 0,Ga=typeof Promise=="function"?Promi [...] +`),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 [...] 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=hr(-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=hr(-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(h,w))E+=h[w],g+=2;else if(w=="\\u"){g+=2;var A=c(I,g,g+4);if(!y(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(y(v,k))throw o("Bad control character in string literal at: "+g);E+=k,g++}}if(x)throw o("Unterminated string at: [...] +`+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 G=c(A,"}",++T);if(G===-1)return;O=k(A,T,G),T=G+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+y(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+"]+$"),y=function(h){ [...] -\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),y=e(79587),h=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 G=n(" [...] +`: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(" [...] Try polyfilling it using "@formatjs/intl-pluralrules" -`,r.jK.MISSING_INTL_API,g);var ne=h.getPluralRules(y,{type:w.pluralType}).select(C-(w.offset||0));K=w.options[ne]||w.options.other}if(!K)throw new r.C8(w.value,C,Object.keys(w.options),g);x.push.apply(x,l(K.value,y,h,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 y;if(n===void 0)y=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings." [...] +`,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 [...] -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(y){return Object.getOwnPropertyDescriptor(u,y).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(y){return Object.getOwnPropertyDescriptor(u,y).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=y,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 y=document.getElementsByTagName("style"),s=0;s<y.length;s++){var l=y[s],c=l [...] -(`+h+": "+f+")",l.name="ChunkLoadError",l.type=h,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,y=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 h=s(__webpack_require__)}for(n&&n(r);y<o.length;y++)c=o[y],__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 Ar(L,F){return ra(L)||Ua(L,F)||er(L,F)||Zr()}var xt=__webpack_require__(62435),lo=__webpack_require__(6915),Dr=__webpack_require__(20057),jo=__webpack_require__(34162);function Zo(L){var F=L.id,te=L.basename,ae=L.cb,Ie=new URLSearchParams({route:F,url:window.location.href}).toString(),ge="".concat(nu(te),"__serverLoader?").concat(Ie);fetch(ge,{credentials:"include"}).then(function(ke){return ke. [...] +|(?![\\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 [...] diff --git a/zh/blog/fury_0_1_0_release/index.html b/zh/blog/fury_0_1_0_release/index.html index e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.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 e71e1a9..f6537e9 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.51f73f40.js"></script> +<script src="/umi.39c9eede.js"></script> </body></html> \ No newline at end of file diff --git a/~demos/:id/index.html b/~demos/:id/index.html index e71e1a9..f6537e9 100644 --- a/~demos/:id/index.html +++ b/~demos/:id/index.html @@ -9,6 +9,6 @@ </head> <body> <div id="root"></div> -<script src="/umi.51f73f40.js"></script> +<script src="/umi.39c9eede.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