Skip to content

Commit 9636673

Browse files
authored
Merge branch 'main' into fix-db-read-pricing-blog
2 parents 9da22c1 + 51509f6 commit 9636673

File tree

10 files changed

+105
-16
lines changed

10 files changed

+105
-16
lines changed

src/routes/+page.svelte

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,16 @@
133133
<div class="my-12 lg:my-[7.5rem]">
134134
<section class="container pb-0">
135135
<a
136-
href="/blog/post/introducing-new-compute-capabilities-appwrite-functions"
136+
href="/blog/post/what-is-mcp"
137137
class="web-hero-banner-button mb-4"
138138
on:click={() => trackEvent({ plausible: { name: 'Banner button click' } })}
139139
>
140140
<span class="web-icon-star shrink-0" aria-hidden="true" />
141141
<span class="text-caption shrink-0 font-medium">New</span>
142142
<div class="web-hero-banner-button-sep" />
143-
<span class="text-caption web-u-trim-1">New compute options available</span>
143+
<span class="text-caption web-u-trim-1"
144+
>Announcing new Appwrite MCP server</span
145+
>
144146
<span class="web-icon-arrow-right shrink-0" aria-hidden="true" />
145147
</a>
146148
<Hero>

src/routes/blog/post/announcing-database-reads-and-writes-pricing/+page.markdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ cover: /images/blog/announcing-database-reads-and-writes-pricing/cover.png
77
timeToRead: 6
88
author: eldad-fux
99
category: announcement
10-
featured: true
10+
featured: false
1111
callToAction: true
1212
---
1313

src/routes/blog/post/image-transformation-with-appwrite-storage/+page.markdoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -277,10 +277,10 @@ const webpImage = storage.getFilePreview(
277277
The above image is originally a PNG file. However, by setting the output format to WebP, Appwrite automatically converts the image to WebP format and returns the transformed image.
278278
You can confirm this by downloading the image or inspecting its source.
279279

280-
The `output` parameter supports `png`, `jpeg`, `webp`, `gif`, `heic`, and `avif`.
280+
The `output` parameter supports `png`, `jpeg`, `webp`, `gif`, and `heic`.
281281

282-
Choosing the right format can significantly impact your application's performance. For example, WebP and AVIF are modern formats that offer better compression and quality than JPEG and PNG.
283-
However, while these are compatible with most modern browsers, it's good practice to implement a fallback for older browsers.
282+
Choosing the right format can significantly impact your application's performance. For example, WebP is a modern format that offers better compression and quality than JPEG and PNG.
283+
However, while it's supported in most modern browsers, it's good practice to implement a fallback for older browsers.
284284

285285
# Final thoughts
286286

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
layout: post
3+
title: TypeScript 7.0 will be 10x faster with Go
4+
description: Microsoft is rewriting TypeScript's compiler in Go. Learn what this means and how it will impact your workflow.
5+
date: 2025-03-18
6+
cover: /images/blog/typescript-7-faster-with-go/cover.png
7+
timeToRead: 5
8+
author: ebenezer-don
9+
category: tutorial
10+
---
11+
12+
Over the past decade, TypeScript has earned the trust of developers building large-scale JavaScript applications. It offers the safety net of a type system, reliable tooling, and codebases that are *arguably* easier to maintain. Yet, if you ask developers working with large projects, they'll likely express one common frustration: the TypeScript compiler can feel painfully slow.
13+
14+
To address this challenge, Microsoft recently confirmed a significant shift under the hood. They are rewriting TypeScript's compiler (tsc) in Go. Officially codenamed "Project Corsa," this transition aims to dramatically improve compilation performance. Early benchmarks and public demonstrations from Microsoft suggest compilation speeds could improve roughly tenfold.
15+
16+
Let's break down what this transition means, what's officially confirmed, and how it'll affect you as a developer.
17+
18+
# What does this mean for TypeScript?
19+
20+
Here's what we know so far:
21+
22+
- **Compiler rewrite:** The TypeScript compiler, currently written in TypeScript and running on Node.js, is being rewritten from scratch in Go. Microsoft announced this under the internal name "Project Corsa."
23+
- **Motivation:** The primary motivation is performance. TypeScript compilation times and type-checking responsiveness are known to degrade as projects scale.
24+
- **Language stability:** The rewrite will not affect TypeScript's syntax or language design. It will continue emitting standard JavaScript as before. Developers will still write TypeScript exactly as they currently do.
25+
- **Standalone binary:** The new Go-based compiler will run as a standalone binary, removing the Node.js runtime dependency currently required for compilation.
26+
27+
Microsoft has not announced any changes to TypeScript's language features, syntax, or output because of this rewrite. The transition to Go is an engineering effort to improve performance and maintainability.
28+
29+
# Why Go specifically? Not Rust or C++?
30+
31+
One question naturally arises: why Go specifically? While Microsoft hasn't provided a comprehensive breakdown comparing Go to alternatives like Rust or C++, they've [publicly shared](https://github.com/microsoft/typescript-go/discussions/411) some key factors:
32+
33+
**Structural similarity:** Go's programming style closely resembles the existing TypeScript codebase, making it much easier to port TypeScript's logic while keeping behavior and optimizations intact. This is critical since Microsoft plans to maintain both the JavaScript and Go-based compilers for some time.
34+
35+
**Memory management tradeoffs:** Unlike Rust, which requires manual memory handling, Go provides fine-grained control over memory allocation without forcing constant memory management decisions throughout the codebase. TypeScript's compiler doesn't suffer from latency-sensitive GC pauses, so Go's garbage collection works well for this use case.
36+
37+
**Graph processing & AST traversal:** Go provides an ergonomic way to traverse complex trees and graphs, a key part of TypeScript's type-checking and compilation process.
38+
39+
**Long-term API design considerations:** The TypeScript team wants more control over internal compiler APIs. While Go's interop with JavaScript isn't as strong as some alternatives, moving to a more intentional API design will help modernize the ecosystem.
40+
41+
# Benchmark numbers: early results, still preliminary
42+
43+
Perhaps the most attention-grabbing details involve benchmark numbers shared by Microsoft and industry publications. For instance, compiling the Visual Studio Code codebase (about 1.5 million lines of TypeScript) reportedly went from around 78 seconds with the current compiler down to roughly 7.5 seconds with the new Go-based compiler; a 10x improvement. Other large projects, such as Playwright and TypeORM, reportedly saw similar performance improvements (approximately 10x-13x faster).
44+
45+
These numbers come directly from early demonstrations and internal testing shared by Microsoft. But benchmarks at this early stage often represent idealized or carefully selected scenarios. Real-world improvements for diverse TypeScript projects may vary, and final figures might differ as the implementation matures.
46+
47+
# How will this affect tooling and ecosystem compatibility?
48+
49+
A main concern among developers centers around compatibility with existing tools and integrations. Currently, TypeScript integrates smoothly with bundlers like Webpack, Vite, and esbuild, plus countless IDE plugins and language-server implementations.
50+
51+
Microsoft has publicly committed to maintaining compatibility and minimizing disruption throughout the compiler transition. Still, it's realistic to expect that tooling relying heavily on internal compiler APIs or deeply integrated TypeScript behaviors may require some adjustments. It's been [confirmed](https://github.com/microsoft/typescript-go/discussions/411) that the TypeScript team will initially support both the existing JavaScript-based compiler and the new Go-based compiler concurrently. This dual-compiler support would allow tool authors and ecosystem maintainers ample time to adapt without immediate disruption.
52+
53+
While Microsoft is prioritizing a smooth transition, developers and tool authors should prepare for minor integration adjustments, especially if their workflows rely directly on internal TypeScript compiler APIs.
54+
55+
# Timeline and versioning: what we know
56+
57+
Microsoft has confirmed that **TypeScript 7.0 will ship with the Go-based compiler** once it reaches feature parity with the current JavaScript-based version. Meanwhile, the existing compiler will continue under the **TypeScript 6.x** series, which will receive updates and breaking changes to align with the upcoming transition.
58+
59+
Since some projects may depend on specific APIs or legacy configurations, **Microsoft will maintain TypeScript 6.x alongside TypeScript 7+** until the Go-based compiler reaches full stability and adoption.
60+
61+
The rough timeline is:
62+
63+
- **Mid-2025** – Preview release with basic type-checking.
64+
- **Late 2025** – Feature-complete version for project builds and language services.
65+
66+
For now, both compilers will coexist, allowing developers to upgrade at their own pace.
67+
68+
# What does this mean for you?
69+
70+
This transition changes how TypeScript is compiled but not how developers use it. The language itself remains the same, and the compiler will continue outputting JavaScript as before. The main difference is that builds should be significantly faster, with better performance in large projects.
71+
72+
That said, the new compiler is still in development, and benchmarks are early-stage. While Microsoft is working to maintain compatibility, some tools may need updates, and TypeScript 6.x will remain available for projects that aren't ready to switch immediately.
73+
74+
The long-term goal is for the Go-based compiler to fully replace the current one, but until it reaches full stability, both will be maintained in parallel.
75+
76+
We'll continue monitoring official announcements and detailed benchmarks as Microsoft progresses through this transition. Until then, you can remain cautiously optimistic: the future of TypeScript looks promising, and notably faster.

src/routes/blog/post/what-is-mcp/+page.markdoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ cover: /images/blog/what-is-mcp/cover.png
77
timeToRead: 7
88
author: ebenezer-don
99
category: tutorial
10+
featured: true
1011
---
1112

1213
If you've ever tried using an AI assistant for something practical, like pulling real data from your work files, checking a database, or sending a message, then you've probably hit a frustrating wall.

src/routes/docs/advanced/migrations/firebase/+page.markdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ To begin migrating to Appwrite, follow these steps.
4949

5050
1. Click on the **Create Migration** button and select **Firebase** as your source.
5151

52-
1. Upload the JSON file to Appwrite and follow the migration wizard to select which resources you need to migrate. Finally click **Start migration** to begin the migration process.
52+
1. Paste the contents of your JSON file into the textbox and follow the migration wizard to select which resources you need to migrate. Finally click **Start migration** to begin the migration process.
5353

5454
{% /section %}
5555
{% section #next-steps step=4 title="Next steps" %}

src/routes/docs/references/+layout.svelte

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@
88
/\/docs\/references\/.*?\/(client|server).*?\/.*?\/?/
99
);
1010
11-
$: prefix = `/docs/references/${$preferredVersion ?? $page.params?.version ?? 'cloud'}/${
12-
$preferredPlatform ?? $page.params?.platform ?? 'client-web'
13-
}`;
11+
$: platform = $preferredPlatform ?? $page.params?.platform ?? 'client-web';
12+
13+
/* correct platform prefix for references page */
14+
$: resolvedPlatformPrefix = /^server-|^client-/.test(platform)
15+
? platform
16+
: `server-${platform}`;
17+
18+
$: prefix = `/docs/references/${$preferredVersion ?? $page.params?.version ?? 'cloud'}/${resolvedPlatformPrefix}`;
19+
1420
$: navigation = [
1521
{
1622
label: 'Getting started',

src/routes/docs/references/[version]/[platform]/[service]/+page.svelte

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,14 @@
5454
// except nodejs, all other server sided need to be saved as without `server-` prefix
5555
const isServerSide =
5656
!platform.startsWith('client-') && !platform.startsWith('server-nodejs');
57+
58+
let correctPlatform = platform;
5759
if (isServerSide) {
58-
const correctPlatform = platform.replaceAll(`server-`, ``);
59-
preferredPlatform.set(correctPlatform as Platform);
60+
correctPlatform = platform.replaceAll(`server-`, ``) as Platform;
6061
}
6162
63+
preferredPlatform.set(correctPlatform as Platform);
64+
6265
goto(`/docs/references/${version}/${platform}/${service}`, {
6366
noScroll: true
6467
});
@@ -87,7 +90,7 @@
8790
// nodejs has a `server-` prefix.
8891
const needsServerPrefix =
8992
!platform.startsWith('client-') && !platform.startsWith('server-');
90-
if (needsServerPrefix) {
93+
if (needsServerPrefix && document.referrer) {
9194
platformBindingForSelect = `server-${platform}` as Platform;
9295
}
9396
}
@@ -100,7 +103,8 @@
100103
const hasPlatformPrefix =
101104
$preferredPlatform.startsWith('client-') || $preferredPlatform.startsWith('server-');
102105
103-
if (!isSame) {
106+
/* `document.referrer` = don't redirect if the page was opened via a direct url hit */
107+
if (!isSame && document.referrer) {
104108
const platformMode = hasPlatformPrefix
105109
? $preferredPlatform
106110
: `server-${$preferredPlatform}`;
@@ -123,7 +127,7 @@
123127
// the service description up to the first full stop, providing sufficient information.
124128
$: shortenedDescription = serviceDescription.substring(0, serviceDescription.indexOf('.') + 1);
125129
126-
$: platformBindingForSelect = platform;
130+
$: platformBindingForSelect = $page.params.platform as Platform;
127131
$: platform = ($preferredPlatform ?? $page.params.platform) as Platform;
128132
$: platformType = platform.startsWith('client-') ? 'CLIENT' : 'SERVER';
129133
$: serviceName = serviceMap[data.service?.name];

src/routes/pricing/compare-plans.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
free: '1 hour',
116116
pro: '7 days',
117117
scale: '28 days',
118-
enterprise: '90 days'
118+
enterprise: 'Custom'
119119
},
120120
{
121121
title: 'Budget caps and alerts',
800 KB
Loading

0 commit comments

Comments
 (0)