| <!doctype html><html lang=en-US dir=ltr class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.2"><title data-rh=true>Fury v0.5.0 Released | Apache Fory™</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"/><meta data-rh=true property=og:url content=https://fory.apache.org/blog/fury_0_5_0_release /><meta data-rh=true property=og:locale content=en_US /><meta data-rh=true property=og:locale:alternate content=zh_CN /><meta data-rh=true name=docusaurus_locale content=en-US /><meta data-rh=true name=docusaurus_tag content=default /><meta data-rh=true name=docsearch:language content=en-US /><meta data-rh=true name=docsearch:docusaurus_tag content=default /><meta data-rh=true http-equiv=Content-Security-Policy content="frame-src 'self' https://ghbtns.com/;"/><meta data-rh=true property=og:image content=https://fory.apache.org/img/logo.png /><meta data-rh=true property=og:image:width content=1500 /><meta data-rh=true property=og:image:height content=1500 /><meta data-rh=true name=twitter:card content=summary_large_image /><meta data-rh=true name=twitter:image content=https://fory.apache.org/img/logo.png /><meta data-rh=true property=og:title content="Fury v0.5.0 Released | Apache Fory™"/><meta data-rh=true name=description content="Fury 0.5.0 defines cross-language and Java serialization specifications while improving the Java, Go, Python, JavaScript, and C++ runtimes."/><meta data-rh=true property=og:description content="Fury 0.5.0 defines cross-language and Java serialization specifications while improving the Java, Go, Python, JavaScript, and C++ runtimes."/><meta data-rh=true property=og:type content=article /><meta data-rh=true property=article:published_time content=2024-05-03T00:00:00.000Z /><meta data-rh=true property=article:author content=https://github.com/chaokunyang /><meta data-rh=true property=article:tag content=fury /><link data-rh=true rel=icon href=/img/favicon.ico /><link data-rh=true rel=canonical href=https://fory.apache.org/blog/fury_0_5_0_release /><link data-rh=true rel=alternate href=https://fory.apache.org/blog/fury_0_5_0_release hreflang=en-US /><link data-rh=true rel=alternate href=https://fory.apache.org/zh-CN/blog/fury_0_5_0_release hreflang=zh-CN /><link data-rh=true rel=alternate href=https://fory.apache.org/blog/fury_0_5_0_release hreflang=x-default /><script data-rh=true type=application/ld+json>{"@context":"https://schema.org","@id":"https://fory.apache.org/blog/fury_0_5_0_release","@type":"BlogPosting","author":{"@type":"Person","description":"Apache Fory PMC Chair","image":"/img/authors/chaokunyang.png","name":"Shawn Yang","url":"https://github.com/chaokunyang"},"datePublished":"2024-05-03T00:00:00.000Z","description":"Fury 0.5.0 defines cross-language and Java serialization specifications while improving the Java, Go, Python, JavaScript, and C++ runtimes.","headline":"Fury v0.5.0 Released","isPartOf":{"@id":"https://fory.apache.org/blog","@type":"Blog","name":"Blog"},"keywords":[],"mainEntityOfPage":"https://fory.apache.org/blog/fury_0_5_0_release","name":"Fury v0.5.0 Released","url":"https://fory.apache.org/blog/fury_0_5_0_release"}</script><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="Apache Fory™ RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Apache Fory™ Atom Feed"><script type=text/javascript>"fury.apache.org"===window.location.host&&(window.location.href="https://fory.apache.org"),function(){var i=["0.17","0.16","0.15","0.14","0.13","0.12","0.11","0.10"];if(0!==i.length){var t=window.location.pathname.split("/").filter(Boolean),a=/^[a-z]{2}-[A-Z]{2}$/.test(t[0])?t[0]:null,e=+!!a;if(!("docs"!==t[e]||0>i.indexOf(t[e+1]))){var o=["/archive"];a&&o.push(a),o.push.apply(o,t.slice(e));var n=window.location.pathname.endsWith("/")?"/":"";window.location.replace(o.join("/")+n+window.location.search+window.location.hash)}}}(),function(){var i=window.location.pathname.split("/").filter(Boolean),t="docs"===i[0]?0:/^[a-z]{2}-[A-Z]{2}$/.test(i[0])&&"docs"===i[1]?1:-1;if(!(t<0)){var a=t+1,e=i[a];if(!/^[0-9]+[.][0-9]+(?:[.][0-9]+)?$/.test(e)){"next"===e&&a++;var o=i.slice(a).join("/"),n=o.split("/"),r=2===n.length&&"guide"===n[0]?n[1]:null,s=r&&["cpp","csharp","dart","go","java","javascript","kotlin","python","rust","scala","swift"].indexOf(r)>=0?"object-serialization/"+r:({"introduction/overview":"introduction","introduction/benchmark":"benchmarks","start/install":"start","start/usage":"start","guide/xlang":"object-serialization/xlang","guide/xlang/getting_started":"object-serialization/xlang","guide/xlang/serialization":"object-serialization/xlang","guide/java/json_support":"json","guide/rust/external_types":"object-serialization/rust/external-types","guide/dart/external_types":"object-serialization/dart/external-types","guide/swift/external_types":"object-serialization/swift/external-types","guide/csharp/external_types":"object-serialization/csharp/external-types","guide/csharp/basic_serialization":"object-serialization/csharp/basic-serialization","guide/dart/inheritance":"object-serialization/dart/inheritance","benchmarks/rust":"benchmarks/object-serialization/xlang/rust","compiler/compiler_guide":"compiler/getting-started","community/development":"development"})[o];if(s){var l="/"+i.slice(0,a).join("/");window.location.replace(l+"/"+s+"/"+window.location.search+window.location.hash)}}}}(),function(){var i=window.location.pathname,t=i.split("/").filter(Boolean),a="docs"===t[0]?0:/^[a-z]{2}-[A-Z]{2}$/.test(t[0])&&"docs"===t[1]?1:-1;if(!(a<0)){var e=a+1,o=t[e];if(("next"===o||/^[0-9]+[.][0-9]+(?:[.][0-9]+)?$/.test(o))&&e++,!("docs"!==t[e]||0>["guide","introduction","start"].indexOf(t[e+1]))){t.splice(e,1);var n="/"+t.join("/");i.endsWith("/")&&(n+="/"),window.location.replace(n+window.location.search+window.location.hash)}}}()</script><link rel=stylesheet href=/assets/css/styles.f8ec99d5.css /><script src=/assets/js/runtime~main.04216f49.js defer></script><script src=/assets/js/main.991838c1.js defer></script></head><body><svg style="display: none;"><defs> |
| <symbol id=theme-svg-external-link viewBox="0 0 24 24"><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol> |
| </defs></svg> |
| <script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||"light"),document.documentElement.setAttribute("data-theme-choice",t||"light")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="theme-layout-navbar navbar navbar--fixed-top"><div class=navbar__inner><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/><div class=navbar__logo><img src=/img/fory-logo-light.png alt="Apache Fory™ Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"/><img src=/img/fory-logo-dark.png alt="Apache Fory™ Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"/></div><b class="navbar__title text--truncate"></b></a><a class="navbar__item navbar__link" href=/docs/introduction/>Docs</a><a class="navbar__item navbar__link" href=/docs/specification/xlang_serialization_spec>Specification</a><a class="navbar__item navbar__link" href=/docs/community/>Community</a><a class="navbar__item navbar__link" href=/user>Users</a><a class="navbar__item navbar__link" href=/download>Download</a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/blog>Blog</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link>ASF</a><ul class=dropdown__menu><li><a href=https://www.apache.org/ target=_blank rel="noopener noreferrer" class=dropdown__link>Foundation</a><li><a href=https://www.apache.org/licenses/ target=_blank rel="noopener noreferrer" class=dropdown__link>License</a><li><a href=https://www.apache.org/events/current-event.html target=_blank rel="noopener noreferrer" class=dropdown__link>Events</a><li><a href=https://privacy.apache.org/policies/privacy-policy-public.html target=_blank rel="noopener noreferrer" class=dropdown__link>Privacy</a><li><a href=https://www.apache.org/security/ target=_blank rel="noopener noreferrer" class=dropdown__link>Security</a><li><a href=https://www.apache.org/foundation/sponsorship.html target=_blank rel="noopener noreferrer" class=dropdown__link>Sponsorship</a><li><a href=https://www.apache.org/foundation/thanks.html target=_blank rel="noopener noreferrer" class=dropdown__link>Thanks</a><li><a href=https://www.apache.org/foundation/policies/conduct.html target=_blank rel="noopener noreferrer" class=dropdown__link>Code of Conduct</a></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class=navbar__link aria-haspopup=true aria-expanded=false role=button href=/docs/>1.7</a><ul class=dropdown__menu><li><a class=dropdown__link href=/docs/next/>dev</a><li><a class=dropdown__link href=/docs/>1.7</a><li><a class=dropdown__link href=/docs/1.6/>1.6</a><li><a class=dropdown__link href=/docs/1.5/introduction/overview>1.5</a><li><a class=dropdown__link href=/docs/1.4/introduction/overview>1.4</a><li><a class=dropdown__link href=/docs/1.3/introduction/overview>1.3</a><li><a class=dropdown__link href=/docs/1.2/introduction/overview>1.2</a><li><a class=dropdown__link href=/docs/1.1/introduction/overview>1.1</a><li><a class=dropdown__link href=/docs/1.0/introduction/overview>1.0</a><li><a href=https://fory.apache.org/archive/docs/0.17/introduction/overview/ target=_blank rel="noopener noreferrer" class=dropdown__link>More versions<svg width=12 height=12 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><a href=https://github.com/apache/fory target=_blank rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link><svg viewBox="0 0 24 24" width=20 height=20 aria-hidden=true class=iconLanguage_nlXk><path fill=currentColor d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>English</a><ul class=dropdown__menu><li><a href=/blog/fury_0_5_0_release target=_self rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang=en-US>English</a><li><a href=/zh-CN/blog/fury_0_5_0_release target=_self rel="noopener noreferrer" class=dropdown__link lang=zh-CN>简体中文</a></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type=button disabled title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill=currentColor d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"/></svg></button></div><div class=navbarSearchContainer_Bca1><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled/></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class=row><main class="col col--9 col--offset-1"><article class=""><header><h1 class=title_f1Hy>Fury v0.5.0 Released</h1><div class="container_mt6G margin-vert--md"><time datetime=2024-05-03T00:00:00.000Z>May 3, 2024</time> · <!-- -->5 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--12 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href=https://github.com/chaokunyang target=_blank rel="noopener noreferrer" class=avatar__photo-link><img class="avatar__photo authorImage_XqGP" src=/img/authors/chaokunyang.png alt="Shawn Yang"/></a><div class="avatar__intro authorDetails_lV9A"><div class=avatar__name><a href=https://github.com/chaokunyang target=_blank rel="noopener noreferrer"><span class=authorName_yefp translate=no>Shawn Yang</span></a></div><small class=authorTitle_nd0D title="Apache Fory PMC Chair">Apache Fory PMC Chair</small><div class=authorSocials_rSDt></div></div></div></div></div></header><div id=__blog-post-container class=markdown itemprop=articleBody><p>We're excited to announce the release of Fury v0.5.0. This release incorporates a myriad of improvements, bug fixes, and new features across multiple languages including Java, Golang, Python and JavaScript. It further refines Fury's performance, compatibility, and developer experience.</p> |
| <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=new-features>New Features<a href=#new-features class=hash-link aria-label="Direct link to New Features" title="Direct link to New Features" translate=no></a></h2> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=specification>Specification<a href=#specification class=hash-link aria-label="Direct link to Specification" title="Direct link to Specification" translate=no></a></h3> |
| <ul> |
| <li class="">Introduced fury cross-language serialization specification (#1413, #1508)</li> |
| <li class="">Introduced xlang type mapping (#1468)</li> |
| <li class="">Introduced fury java specification (#1240)</li> |
| <li class="">Introduced meta string encoding specification (#1565, #1513, #1517)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=java>Java<a href=#java class=hash-link aria-label="Direct link to Java" title="Direct link to Java" translate=no></a></h3> |
| <ul> |
| <li class="">Support for compatible mode with GraalVM (#1586, #1587).</li> |
| <li class="">Support unexisted array/enum classes and enabled deserializeUnexistedClass by default (#1569, #1575).</li> |
| <li class="">meta string encoding algorithm in java (#1514, #1568, #1516, #1565)</li> |
| <li class="">Support meta string encoding for classname and package name (#1527)</li> |
| <li class="">native streaming mode deserialization (#1451, #1551)</li> |
| <li class="">native channel stream reader (#1483)</li> |
| <li class="">Support registration in thread safe fury (#1280)</li> |
| <li class="">Implement fury logger and remove slf4j library (#1485, #1494, #1506, #1492)</li> |
| <li class="">Support adjust logger level dynamically (#1557)</li> |
| <li class="">Support jdk proxy serialization for graalvm (#1379)</li> |
| <li class="">Specify JPMS module names (#1343)</li> |
| <li class="">Align string array to collection protocol v2 (#1228)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=javascript>JavaScript<a href=#javascript class=hash-link aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate=no></a></h3> |
| <ul> |
| <li class="">Align implementation to new Xlang protocol (#1487)</li> |
| <li class="">Implement Xlang map (#1549)</li> |
| <li class="">Implemented xlang map code generator (#1571)</li> |
| <li class="">Added magic number feature for better serialization control (#1550).</li> |
| <li class="">Support oneof (#1348)</li> |
| <li class="">create zero-copy buffer when convert (#1386)</li> |
| <li class="">Implement the collection protocol (#1337)</li> |
| <li class="">Implement Enum (#1321)</li> |
| <li class="">compress numbers (#1290)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=c>C++<a href=#c class=hash-link aria-label="Direct link to C++" title="Direct link to C++" translate=no></a></h3> |
| <ul> |
| <li class="">Support optional fields/elements in RowEncoder (#1223)</li> |
| <li class="">Support mapping types for RowEncodeTrait (#1247)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=golang>Golang<a href=#golang class=hash-link aria-label="Direct link to Golang" title="Direct link to Golang" translate=no></a></h3> |
| <ul> |
| <li class="">Implemented Fury meta string encoding algorithm (#1566).</li> |
| <li class="">concat meta string len with flags (#1517)</li> |
| </ul> |
| <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=enhancements>Enhancements<a href=#enhancements class=hash-link aria-label="Direct link to Enhancements" title="Direct link to Enhancements" translate=no></a></h2> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=java-1>Java<a href=#java-1 class=hash-link aria-label="Direct link to Java" title="Direct link to Java" translate=no></a></h3> |
| <ul> |
| <li class="">Improved buffer growth strategy to support larger data sizes for serialization (#1582).</li> |
| <li class="">Performance optimizations for MetaStringDecoder and various serialization processes (#1568, #1511, #1493).</li> |
| <li class="">concat write classname flag with package name (#1523)</li> |
| <li class="">concat meta string len with flags (#1517)</li> |
| <li class="">fastpath for read/write small varint in range <code>[0,127]</code> (#1503)</li> |
| <li class="">optimize read float/double for jvm jit inline (#1472)</li> |
| <li class="">replace Guava's TypeToken with self-made (#1553)</li> |
| <li class="">Remove basic guava API usage (#1244)</li> |
| <li class="">optimize fury creation speed (#1511)</li> |
| <li class="">optimize string serialization by concat coder and length (#1486)</li> |
| <li class="">carry read objects when deserialization fail for better trouble shooting (#1420)</li> |
| <li class="">implement define_class insteadof using javaassist (#1422)</li> |
| <li class="">avoid recompilation when gc happens for memory pressure (#1411, #1585)</li> |
| <li class="">Fix immutable collection ref tracking (#1403)</li> |
| <li class="">reduce fury caller stack (#1496)</li> |
| <li class="">Extract BaseFury interface (#1382)</li> |
| <li class="">refine collection builder util (#1334)</li> |
| <li class="">disable async compilation for graalvm (#1222)</li> |
| <li class="">refine endian check code size in buffer (#1501)</li> |
| <li class="">generate list fori loop instead of iterator loop for list serialization (#1493)</li> |
| <li class="">Reduce unsafeWritePositiveVarLong bytecode size. (#1491)</li> |
| <li class="">Reduce unsafePutPositiveVarInt bytecode size. (#1490, #1489)</li> |
| <li class="">optimize read char/short jvm jit inline (#1471)</li> |
| <li class="">reduce code size of read long to optimize jvm jit inline (#1470)</li> |
| <li class="">reduce readInt/readVarInt code size for for jvm jit inline (#1469)</li> |
| <li class="">refactor readVarUint32 algorithm (#1462)</li> |
| <li class="">rewrite readVarUint64 algorithm (#1463)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=javascript-1>JavaScript<a href=#javascript-1 class=hash-link aria-label="Direct link to JavaScript" title="Direct link to JavaScript" translate=no></a></h3> |
| <ul> |
| <li class="">Make PlatformBuffer available if has Buffer polyfill (#1373)</li> |
| <li class="">enhance performance 64bits number (#1320)</li> |
| <li class="">Refactor & Compress Long (#1313)</li> |
| <li class="">Improve tag write performance (#1241)</li> |
| <li class="">Add more methods for BinaryReader (#1231)</li> |
| <li class="">Implements tuple serializer (#1216)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=python>Python<a href=#python class=hash-link aria-label="Direct link to Python" title="Direct link to Python" translate=no></a></h3> |
| <ul> |
| <li class="">concat meta string len with flags (#1517)</li> |
| </ul> |
| <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=bug-fix>Bug Fix<a href=#bug-fix class=hash-link aria-label="Direct link to Bug Fix" title="Direct link to Bug Fix" translate=no></a></h3> |
| <h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=java-2>Java<a href=#java-2 class=hash-link aria-label="Direct link to Java" title="Direct link to Java" translate=no></a></h4> |
| <ul> |
| <li class="">Fix bytebuffer no such method error (#1580)</li> |
| <li class="">Prevent exception in ObjectArray.clearObjectArray() (#1573)</li> |
| <li class="">Fix slf4j on graalvm (#1432)</li> |
| <li class="">Fix illegal classname caused by negative hash (#1436)</li> |
| <li class="">Fix BigDecimal serializer (#1431)</li> |
| <li class="">Fix BigInteger serialization (#1479)</li> |
| <li class="">Fix type conflict in method split (#1371)</li> |
| <li class="">Fix CodeGen Name conflicts when omitting java.lang prefix #1363 (#1366)</li> |
| <li class="">Fix ClassLoader npe in loadOrGenCodecClass (#1346)</li> |
| <li class="">Fix big buffer trunc (#1402)</li> |
| <li class="">Make Blacklist detection is also performed when the Class is registered. (#1398)</li> |
| <li class="">avoid big object graph cause buffer take up too much memory (#1397)</li> |
| <li class="">Fix get static field by unsafe (#1380)</li> |
| <li class="">Fix javax package for accessor codegen (#1388)</li> |
| <li class="">Fix nested collection cast for scala/java (#1333)</li> |
| <li class="">Fix References within InvocationHandler (#1365)</li> |
| <li class="">Allow partial read of serialized size from <code>InputStream</code> (#1391)</li> |
| <li class="">add potential missing bean class-loader (#1381)</li> |
| <li class="">Fix polymorphic array serialization (#1324)</li> |
| <li class="">Fix nested collection num elements (#1306)</li> |
| <li class="">Fix collection init size typo (#1342)</li> |
| <li class="">Clear extRegistry.getClassCtx if generate serializer class failed (#1221)</li> |
| </ul> |
| <h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=rust>Rust<a href=#rust class=hash-link aria-label="Direct link to Rust" title="Direct link to Rust" translate=no></a></h4> |
| <ul> |
| <li class="">Fix memory errors caused by casting (#1372)</li> |
| <li class="">Fix incorrect cast (#1345)</li> |
| </ul> |
| <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=miscellaneous>Miscellaneous<a href=#miscellaneous class=hash-link aria-label="Direct link to Miscellaneous" title="Direct link to Miscellaneous" translate=no></a></h2> |
| <ul> |
| <li class="">Numerous code cleanups, refactorings, and internal improvements across all supported languages to enhance code quality |
| and maintainability.</li> |
| <li class="">Moved various utilities into more appropriate packages to improve code organization and readability (#1584, #1583, |
| #1578).</li> |
| <li class="">rename MemoryBuffer read/write/put/getType with read/write/put/getTypeNumber (#1480, #1464, #1505, #1500)</li> |
| <li class="">extract public Fury methods to BaseFury (#1467)</li> |
| <li class="">Optimize Class ID allocation. (#1406)</li> |
| <li class="">refine Collection util data structure (#1287) (#1288)</li> |
| <li class="">Improve Status by using unique_ptr (#1234)</li> |
| <li class="">Improve FormatTimePoint by removing sstream (#1233)</li> |
| <li class="">Drop optional chaining expression (#1338)</li> |
| </ul> |
| <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=new-contributors>New Contributors<a href=#new-contributors class=hash-link aria-label="Direct link to New Contributors" title="Direct link to New Contributors" translate=no></a></h2> |
| <ul> |
| <li class="">@nandakumar131 made their first contribution in <a href=https://github.com/apache/fury/pull/1244 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1244</a></li> |
| <li class="">@vesense made their first contribution in <a href=https://github.com/apache/fury/pull/1260 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1260</a></li> |
| <li class="">@LiangliangSui made their first contribution in <a href=https://github.com/apache/fury/pull/1294 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1294</a></li> |
| <li class="">@liuxiaocs7 made their first contribution in <a href=https://github.com/apache/fury/pull/1312 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1312</a></li> |
| <li class="">@mtf90 made their first contribution in <a href=https://github.com/apache/fury/pull/1343 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1343</a></li> |
| <li class="">@bowin made their first contribution in <a href=https://github.com/apache/fury/pull/1353 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1353</a></li> |
| <li class="">@cn-at-osmit made their first contribution in <a href=https://github.com/apache/fury/pull/1366 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1366</a></li> |
| <li class="">@Maurice-Betzel made their first contribution in <a href=https://github.com/apache/fury/pull/1381 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1381</a></li> |
| <li class="">@phogh made their first contribution in <a href=https://github.com/apache/fury/pull/1391 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1391</a></li> |
| <li class="">@laglangyue made their first contribution in <a href=https://github.com/apache/fury/pull/1415 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1415</a></li> |
| <li class="">@Munoon made their first contribution in <a href=https://github.com/apache/fury/pull/1467 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1467</a></li> |
| <li class="">@pixeeai made their first contribution in <a href=https://github.com/apache/fury/pull/1559 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1559</a></li> |
| <li class="">@huisman6 made their first contribution in <a href=https://github.com/apache/fury/pull/1572 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1572</a></li> |
| <li class="">@tommyettinger made their first contribution in <a href=https://github.com/apache/fury/pull/1573 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1573</a></li> |
| <li class="">@qingoba made their first contribution in <a href=https://github.com/apache/fury/pull/1566 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/pull/1566</a></li> |
| </ul> |
| <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=acknowledgements>Acknowledgements<a href=#acknowledgements class=hash-link aria-label="Direct link to Acknowledgements" title="Direct link to Acknowledgements" translate=no></a></h2> |
| <p>Thanks @chaokunyang @theweipeng @PragmaTwice @LiangliangSui @nandakumar131 @Munoon @qingoba @vesense @liuxiaocs7 @mtf90 @bowin @cn-at-osmit @Maurice-Betzel @phogh @laglangyue @tommyettinger @huisman6 @pixeeai</p> |
| <p>A big thank you to all our contributors who have worked hard on this release. Your contributions, whether through code, |
| documentation, or issue reporting, are really appreciated.</p> |
| <p><strong>Full Changelog</strong>: <a href=https://github.com/apache/fury/compare/v0.4.1...v0.5.0 target=_blank rel="noopener noreferrer" class="">https://github.com/apache/fury/compare/v0.4.1...v0.5.0</a></div><footer class="row docusaurus-mt-lg blogPostFooterDetailsFull_Wr5y"><div class=col><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class=tag_QGVx><a rel=tag class="tag_zVej tagRegular_sFm0" href=/blog/tags/fury>fury</a></ul></div><div class="col margin-top--sm"><a href=https://github.com/apache/fory-site/tree/main/blog/2024-05-03-fury_0_5_0_release.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_Z9Sw aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href=/blog/fury_meta_string_37_5_percent_space_efficient_encoding_than_utf8><div class=pagination-nav__sublabel>Newer Post</div><div class=pagination-nav__label>Meta String: A 37.5% space efficient string encoding than UTF-8 in Fury serialization</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/blog/fury_blazing_fast_multiple_language_serialization_framework><div class=pagination-nav__sublabel>Older Post</div><div class=pagination-nav__label>Apache Fury: A blazing fast multi-language serialization framework powered by JIT and zero-copy</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#new-features class="table-of-contents__link toc-highlight">New Features</a><ul><li><a href=#specification class="table-of-contents__link toc-highlight">Specification</a><li><a href=#java class="table-of-contents__link toc-highlight">Java</a><li><a href=#javascript class="table-of-contents__link toc-highlight">JavaScript</a><li><a href=#c class="table-of-contents__link toc-highlight">C++</a><li><a href=#golang class="table-of-contents__link toc-highlight">Golang</a></ul><li><a href=#enhancements class="table-of-contents__link toc-highlight">Enhancements</a><ul><li><a href=#java-1 class="table-of-contents__link toc-highlight">Java</a><li><a href=#javascript-1 class="table-of-contents__link toc-highlight">JavaScript</a><li><a href=#python class="table-of-contents__link toc-highlight">Python</a><li><a href=#bug-fix class="table-of-contents__link toc-highlight">Bug Fix</a></ul><li><a href=#miscellaneous class="table-of-contents__link toc-highlight">Miscellaneous</a><li><a href=#new-contributors class="table-of-contents__link toc-highlight">New Contributors</a><li><a href=#acknowledgements class="table-of-contents__link toc-highlight">Acknowledgements</a></ul></div></div></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://lists.apache.org/list.html?dev@fory.apache.org target=_blank rel="noopener noreferrer" class=footer__link-item>Mailing list<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://join.slack.com/t/fory-project/shared_invite/zt-1u8soj4qc-ieYEu7ciHOqA2mo47llS8A target=_blank rel="noopener noreferrer" class=footer__link-item>Slack<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://twitter.com/ApacheFory target=_blank rel="noopener noreferrer" class=footer__link-item>Twitter<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Docs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs/start/>Install</a><li class=footer__item><a class=footer__link-item href=/docs/start/>Usage</a><li class=footer__item><a class=footer__link-item href=/docs/benchmarks/>Benchmark</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Repositories</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/apache/fory target=_blank rel="noopener noreferrer" class=footer__link-item>Apache Fory™<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://github.com/apache/fory-site target=_blank rel="noopener noreferrer" class=footer__link-item>Website<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=margin-bottom--sm><a href=https://apache.org/ rel="noopener noreferrer" class=footerLogoLink_BH7S><img src=/img/asf_logo.svg alt="ASF Logo" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE" width=200 /><img src=/img/asf_logo.svg alt="ASF Logo" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU" width=200 /></a></div><div class=footer__copyright><div> |
| <p> |
| Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. <br/> |
| Apache Fory, Fory, Apache, the Apache Logo and the Apache Fory logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. |
| </p> |
| </div></div></div></div></footer></div></body> |