Skip to content

Commit

Permalink
Deployed blog from d0247a2
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Oct 16, 2024
1 parent 2b9984c commit ba9f44b
Show file tree
Hide file tree
Showing 11 changed files with 11 additions and 11 deletions.
2 changes: 1 addition & 1 deletion blog/404.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</head>
<body>
<div id="app"><div class="antialiased dark:bg-zinc-900"><div class="max-w-3xl mx-auto px-4 sm:px-6 xl:max-w-5xl xl:px-0"><nav class="flex justify-between items-center py-10 font-bold"><a class="text-xl" href="/blog/" aria-label="Sandtracks"><span class="hidden md:inline dark:text-white">Sandtracks</span></a><div class="text-sm text-gray-500 dark:text-white leading-5"><a class="hover:text-gray-700 dark:hover:text-gray-200" href="https://github.com/melange-re/melange-re.github.io/" target="_blank" rel="noopener"><span class="hidden sm:inline">GitHub </span>Source</a><span class="mr-2 ml-2">·</span><a class="hover:text-gray-700 dark:hover:text-gray-200" href="/blog/feed.rss" target="_self">RSS<span class="hidden sm:inline"> Feed</span></a><span class="mr-2 ml-2">·</span><a class="hover:text-gray-700 dark:hover:text-gray-200" href="https://melange.re" target="_blank" rel="noopener">melange.re →</a></div></nav></div><main class="max-w-3xl mx-auto px-4 sm:px-6 xl:max-w-5xl xl:px-0"><h1 class="text-3xl font-bold">404 Page Not Found</h1></main></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"posts_announcing-melange-3.md\":\"jIg91yLx\",\"index.md\":\"xkUv1qQq\",\"posts_melange-4-is-here.md\":\"HWp7dt5h\",\"posts_introducing-melange-20.md\":\"QfX6_eze\",\"posts_dune-universal-libraries-preview.md\":\"tCsi-mz5\",\"posts_whats-next-for-melange.md\":\"Afjjed8t\",\"posts_the-rest-of-2023-in-melange.md\":\"M7RgHIEQ\",\"posts_whats-2024-brought-to-melange-so-far.md\":\"vw5SFBcR\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sandtracks\",\"description\":\"The official blog for the Melange project\",\"base\":\"/blog/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"xkUv1qQq\",\"posts_whats-next-for-melange.md\":\"Afjjed8t\",\"posts_dune-universal-libraries-preview.md\":\"tCsi-mz5\",\"posts_announcing-melange-3.md\":\"jIg91yLx\",\"posts_the-rest-of-2023-in-melange.md\":\"M7RgHIEQ\",\"posts_introducing-melange-20.md\":\"QfX6_eze\",\"posts_whats-2024-brought-to-melange-so-far.md\":\"vw5SFBcR\",\"posts_melange-4-is-here.md\":\"HWp7dt5h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sandtracks\",\"description\":\"The official blog for the Melange project\",\"base\":\"/blog/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>

</body>
</html>
2 changes: 1 addition & 1 deletion blog/feed.rss
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<title>Sandtracks</title>
<link>https://melange.re/blog</link>
<description>The official blog for the Melange project</description>
<lastBuildDate>Wed, 16 Oct 2024 15:16:30 GMT</lastBuildDate>
<lastBuildDate>Wed, 16 Oct 2024 19:07:30 GMT</lastBuildDate>
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
<generator>https://github.com/jpmonette/feed</generator>
<language>en</language>
Expand Down
2 changes: 1 addition & 1 deletion blog/hashmap.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"posts_announcing-melange-3.md":"jIg91yLx","index.md":"xkUv1qQq","posts_melange-4-is-here.md":"HWp7dt5h","posts_introducing-melange-20.md":"QfX6_eze","posts_dune-universal-libraries-preview.md":"tCsi-mz5","posts_whats-next-for-melange.md":"Afjjed8t","posts_the-rest-of-2023-in-melange.md":"M7RgHIEQ","posts_whats-2024-brought-to-melange-so-far.md":"vw5SFBcR"}
{"index.md":"xkUv1qQq","posts_whats-next-for-melange.md":"Afjjed8t","posts_dune-universal-libraries-preview.md":"tCsi-mz5","posts_announcing-melange-3.md":"jIg91yLx","posts_the-rest-of-2023-in-melange.md":"M7RgHIEQ","posts_introducing-melange-20.md":"QfX6_eze","posts_whats-2024-brought-to-melange-so-far.md":"vw5SFBcR","posts_melange-4-is-here.md":"HWp7dt5h"}
2 changes: 1 addition & 1 deletion blog/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
<p>But we're not done yet: there's more in slate for the next quarter. I'll tell
you what we're looking to achieve in Q3 2023.</p>
</div></div><div class="text-base leading-6 font-medium"><a class="link" aria-label="read more" href="/blog/posts/whats-next-for-melange">Read more →</a></div></div></article></li><!--]--></ul></div></main></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"posts_announcing-melange-3.md\":\"jIg91yLx\",\"index.md\":\"xkUv1qQq\",\"posts_melange-4-is-here.md\":\"HWp7dt5h\",\"posts_introducing-melange-20.md\":\"QfX6_eze\",\"posts_dune-universal-libraries-preview.md\":\"tCsi-mz5\",\"posts_whats-next-for-melange.md\":\"Afjjed8t\",\"posts_the-rest-of-2023-in-melange.md\":\"M7RgHIEQ\",\"posts_whats-2024-brought-to-melange-so-far.md\":\"vw5SFBcR\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sandtracks\",\"description\":\"The official blog for the Melange project\",\"base\":\"/blog/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"xkUv1qQq\",\"posts_whats-next-for-melange.md\":\"Afjjed8t\",\"posts_dune-universal-libraries-preview.md\":\"tCsi-mz5\",\"posts_announcing-melange-3.md\":\"jIg91yLx\",\"posts_the-rest-of-2023-in-melange.md\":\"M7RgHIEQ\",\"posts_introducing-melange-20.md\":\"QfX6_eze\",\"posts_whats-2024-brought-to-melange-so-far.md\":\"vw5SFBcR\",\"posts_melange-4-is-here.md\":\"HWp7dt5h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sandtracks\",\"description\":\"The official blog for the Melange project\",\"base\":\"/blog/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>

</body>
</html>
2 changes: 1 addition & 1 deletion blog/posts/announcing-melange-3.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</head>
<body>
<div id="app"><div class="antialiased dark:bg-zinc-900"><div class="max-w-3xl mx-auto px-4 sm:px-6 xl:max-w-5xl xl:px-0"><nav class="flex justify-between items-center py-10 font-bold"><a class="text-xl" href="/blog/" aria-label="Sandtracks"><span class="hidden md:inline dark:text-white">Sandtracks</span></a><div class="text-sm text-gray-500 dark:text-white leading-5"><a class="hover:text-gray-700 dark:hover:text-gray-200" href="https://github.com/melange-re/melange-re.github.io/" target="_blank" rel="noopener"><span class="hidden sm:inline">GitHub </span>Source</a><span class="mr-2 ml-2">·</span><a class="hover:text-gray-700 dark:hover:text-gray-200" href="/blog/feed.rss" target="_self">RSS<span class="hidden sm:inline"> Feed</span></a><span class="mr-2 ml-2">·</span><a class="hover:text-gray-700 dark:hover:text-gray-200" href="https://melange.re" target="_blank" rel="noopener">melange.re →</a></div></nav></div><main class="max-w-3xl mx-auto px-4 sm:px-6 xl:max-w-5xl xl:px-0"><article class="xl:divide-y xl:divide-gray-200 dark:xl:divide-slate-200/5"><header class="pt-6 xl:pb-10 space-y-1 text-center"><dl><dt class="sr-only">Published on</dt><dd class="text-base leading-6 font-medium text-gray-500 dark:text-gray-300"><time datetime="2024-02-13T12:00:00.000Z">February 13, 2024</time></dd></dl><h1 class="text-3xl leading-9 font-extrabold text-gray-900 dark:text-white tracking-tight sm:text-4xl sm:leading-10 md:text-5xl md:leading-14">Announcing Melange 3</h1></header><div class="divide-y xl:divide-y-0 divide-gray-200 dark:divide-slate-200/5 xl:grid xl:grid-cols-4 xl:gap-x-10 pb-16 xl:pb-20" style="grid-template-rows:auto 1fr;"><dl class="pt-6 pb-10 xl:pt-11 xl:border-b xl:border-gray-200 dark:xl:border-slate-200/5"><dt class="sr-only">Authors</dt><dd><ul class="flex justify-center xl:block space-x-8 sm:space-x-12 xl:space-x-0 xl:space-y-8"><li class="flex items-center space-x-2"><img src="https://gravatar.com/avatar/45c2052f50f561b9dc2cae59c777aecd794f57269fa317f9c9c3365c2e00d16f" alt="author image" class="w-10 h-10 rounded-full"><dl class="text-sm font-medium leading-5 whitespace-nowrap"><dt class="sr-only">Name</dt><dd class="text-gray-900 dark:text-white">Antonio Monteiro</dd><dt class="sr-only">Twitter</dt><dd><a href="https://twitter.com/@_anmonteiro" target="_blank" rel="noopnener noreferrer" class="link">@_anmonteiro</a></dd></dl></li></ul></dd></dl><div class="divide-y divide-gray-200 dark:divide-slate-200/5 xl:pb-0 xl:col-span-3 xl:row-span-2"><div style="position:relative;" class="prose dark:prose-invert max-w-none pt-10 pb-8"><div><p>We are excited to announce the release of <a href="https://github.com/melange-re/melange/releases/tag/3.0.0-51" target="_blank" rel="noreferrer">Melange 3</a>, the latest version of our backend for the OCaml compiler that emits JavaScript.</p><p>This new version comes packed with significant changes, improvements, and a few necessary removals to ensure a more streamlined and efficient experience for our users. This new version is both leaner and more robust. We focused on fixing crashes and removing obsolete functionality, improving the developer and troubleshooting experience, increasing OCaml compatibility and JavaScript FFI integration.</p><hr><p>Here&#39;s a rundown of the key updates in Melange 3. Check the <a href="https://melange.re/v3.0.0/" target="_blank" rel="noreferrer">Melange documentation</a> for further resources.</p><h2 id="major-changes-and-removals" tabindex="-1">Major Changes and Removals <a class="header-anchor" href="#major-changes-and-removals" aria-label="Permalink to &quot;Major Changes and Removals&quot;"></a></h2><p>In Melange 3, <code>Belt</code> is no longer a dependency for the Melange <code>Stdlib</code>. Libraries that depend on the Belt modules will need to include <code>(libraries melange.belt)</code> in their build configuration.</p><p>The <code>@bs</code> / <code>@bs.*</code> attributes have been replaced. Users of Melange should now utilize <code>[@u]</code> for uncurried application and <code>[@mel.*]</code> for FFI attributes. Additionally:</p><ul><li><code>[@mel.val]</code> has been removed as it was redundant in the Melange FFI​​.</li><li><code>[@mel.splice]</code> was removed in favor of <code>[@mel.variadic]</code></li></ul><p>For this release, most modules in the <code>Js</code> namespace had their APIs unified, deduplicated and refactored. In cases such as <code>Js.Int</code>, <code>Js.Date</code>, <code>Js.Re</code>, <code>Js.Float</code>, <code>Js.String</code>, some functions were changed from pipe-first to pipe-last and labeled arguments were added; and incorporating those made others obsolete, which we removed. Modules such as <code>Js.List</code>, <code>Js.Null_undefined</code>, <code>Js.Option</code>, <code>Js.Result</code> and <code>Js.Cast</code> are also no longer present in Melange 3. Alternatives within <code>Stdlib</code> or <code>Belt</code> are instead​​ recommended.</p><h2 id="new-features-and-enhancements" tabindex="-1">New Features and Enhancements <a class="header-anchor" href="#new-features-and-enhancements" aria-label="Permalink to &quot;New Features and Enhancements&quot;"></a></h2><p>Melange 3 includes a few interesting new features and enhancements. From syntax and preprocessing to interop with JavaScript, runtime and error messages, here are some we chose to highlight:</p><h3 id="multiple-ocaml-version-releases" tabindex="-1">Multiple OCaml-version releases <a class="header-anchor" href="#multiple-ocaml-version-releases" aria-label="Permalink to &quot;Multiple OCaml-version releases&quot;"></a></h3><p>A few users have expressed concerns related to Melange having a 1:1 relationship to its OCaml version. This limitation exists because we vendor and modify OCaml&#39;s typechecker, which is usually version-dependent.</p><p>In Melange 1, we made some strides to solve this at the syntax level – one Melange version could work across many compiler switches. But that has a pretty big limitation: editor tooling, documentation generation and everything else that reads from <code>.cmt</code> artifact files needed to be in the same compiler switch as the version of the typechecker in use.</p><p>Starting in Melange 3, we will be adopting the recent Merlin release strategy: Melange has a release for every compiler version that it supports, suffixed with the OCaml version that it corresponds to, e.g. Melange 3 on OCaml 4.14 is <code>v3.0.0-414</code>.</p><h3 id="interop" tabindex="-1">Interop <a class="header-anchor" href="#interop" aria-label="Permalink to &quot;Interop&quot;"></a></h3><ul><li>Modules can be renamed with <code>@mel.as</code></li><li><code>@mel.obj</code> and <code>%mel.obj</code> allow renaming the JS object keys with <code>@mel.as</code></li><li><code>@mel.new</code> can now be used alongside <code>@mel.send</code> and <code>@mel.send.pipe</code></li><li><code>[@@deriving abstract]</code> is now deprecated and split into its two main features: <ul><li><code>[@@deriving jsProperties]</code> derives a JS object creation function that can generate a JS object with optional keys (when using <code>@mel.optional]</code>)</li><li><code>[@@deriving getSet]</code> derives getter / setter functions for the JS object derived by the underlying record.</li></ul></li></ul><h3 id="error-messages-hints" tabindex="-1">Error messages &amp; Hints <a class="header-anchor" href="#error-messages-hints" aria-label="Permalink to &quot;Error messages &amp; Hints&quot;"></a></h3><p>Melange 3 provides more informative error messages originating from both the <code>melange.ppx</code> and the compiler core​​​​.</p><p>In this release, we also introduce a new <code>unprocessed</code> alert to detect code that has made it to the Melange compiler without having been processed by the Melange PPX. Besides hinting users to add <code>(preprocess (pps melange.ppx))</code> to their <code>dune</code> file, this alert more explicitly exposes a common failure mode that puzzles beginners quite often.</p><p>Additionally:</p><ul><li>The Melange playground now has improved reporting of PPX alerts.</li><li>Runtime error rendering in the playground renders better error information.</li><li>The JS parser within Melange has been upgraded to Flow v0.225.1.</li></ul><h3 id="runtime-stdlib" tabindex="-1">Runtime &amp; <code>Stdlib</code> <a class="header-anchor" href="#runtime-stdlib" aria-label="Permalink to &quot;Runtime &amp; `Stdlib`&quot;"></a></h3><p>Melange 3 implements more functions in the following modules of the <code>Stdlib</code>: <code>String</code>, <code>Bytes</code>, <code>Buffer</code>, <code>BytesLabels</code> and <code>StringLabels</code>. Specifically, the new unicode parsing functions upstream are now available in Melange as well.</p><p>Some keys with legacy names have been updated for consistency, such as renaming <code>RE_EXN_ID</code> to <code>MEL_EXN_ID</code> and <code>BS_PRIVATE_NESTED_SOME_NONE</code> to <code>MEL_PRIVATE_NESTED_SOME_NONE</code>​​ in the Melange generated JS runtime.</p><p>The team also took a look at unicode strings in this version of Melange. A few noteworthy changes:</p><ul><li><code>{j| ... |j}</code> interpolation​​​​ now only allows interpolating strings; other usages of interpolation have started to produce type errors.</li><li>Unicode strings such as <code>{js| … |js}</code> can now be used as <code>Format</code> strings.</li></ul><h2 id="conclusion" tabindex="-1">Conclusion <a class="header-anchor" href="#conclusion" aria-label="Permalink to &quot;Conclusion&quot;"></a></h2><p>Melange 3 marks a significant step forward in the OCaml-to-JavaScript compilation process. With these updates, we aim to provide a more robust, efficient, and user-friendly tool for developers. We encourage users to upgrade to this new version to take full advantage of the improvements and to adapt to the breaking changes for a smoother development experience. For a full list of the changes that made it into this release, feel free to consult the <a href="https://github.com/melange-re/melange/blob/main/Changes.md#300-2024-01-28" target="_blank" rel="noreferrer">changelog</a>.</p><p>Stay tuned for more updates and enhancements as we continue to improve Melange and support the developer community!</p></div></div></div><footer class="text-sm font-medium leading-5 divide-y divide-gray-200 dark:divide-slate-200/5 xl:col-start-1 xl:row-start-2"><div class="py-8"><h2 class="text-xs tracking-wide uppercase text-gray-500 dark:text-white"> Next Article </h2><div class="link"><a href="/blog/posts/whats-2024-brought-to-melange-so-far">What&#39;s 2024 brought to Melange so far?</a></div></div><div class="py-8"><h2 class="text-xs tracking-wide uppercase text-gray-500 dark:text-white"> Previous Article </h2><div class="link"><a href="/blog/posts/the-rest-of-2023-in-melange">The rest of 2023 in Melange</a></div></div><div class="pt-8"><a class="link" href="/blog">← Back to the blog</a></div></footer></div></article></main></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"posts_announcing-melange-3.md\":\"jIg91yLx\",\"index.md\":\"xkUv1qQq\",\"posts_melange-4-is-here.md\":\"HWp7dt5h\",\"posts_introducing-melange-20.md\":\"QfX6_eze\",\"posts_dune-universal-libraries-preview.md\":\"tCsi-mz5\",\"posts_whats-next-for-melange.md\":\"Afjjed8t\",\"posts_the-rest-of-2023-in-melange.md\":\"M7RgHIEQ\",\"posts_whats-2024-brought-to-melange-so-far.md\":\"vw5SFBcR\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sandtracks\",\"description\":\"The official blog for the Melange project\",\"base\":\"/blog/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"xkUv1qQq\",\"posts_whats-next-for-melange.md\":\"Afjjed8t\",\"posts_dune-universal-libraries-preview.md\":\"tCsi-mz5\",\"posts_announcing-melange-3.md\":\"jIg91yLx\",\"posts_the-rest-of-2023-in-melange.md\":\"M7RgHIEQ\",\"posts_introducing-melange-20.md\":\"QfX6_eze\",\"posts_whats-2024-brought-to-melange-so-far.md\":\"vw5SFBcR\",\"posts_melange-4-is-here.md\":\"HWp7dt5h\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sandtracks\",\"description\":\"The official blog for the Melange project\",\"base\":\"/blog/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":true}");</script>

</body>
</html>
Loading

0 comments on commit ba9f44b

Please sign in to comment.