From d0fde2a7aaf07c2c11b6c1af3448a4dd4351ef45 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 2 Apr 2025 15:44:56 +0100 Subject: [PATCH 01/10] Finish Grafast article --- .../news/2025-03-24-grafast-0.1-beta.21.mdx | 99 +++++++- grafast/website/static/img/news/thank-you.svg | 234 ++++++++++++++++++ 2 files changed, 324 insertions(+), 9 deletions(-) create mode 100644 grafast/website/static/img/news/thank-you.svg diff --git a/grafast/website/news/2025-03-24-grafast-0.1-beta.21.mdx b/grafast/website/news/2025-03-24-grafast-0.1-beta.21.mdx index c1a666e39f..fb8bf94ccc 100644 --- a/grafast/website/news/2025-03-24-grafast-0.1-beta.21.mdx +++ b/grafast/website/news/2025-03-24-grafast-0.1-beta.21.mdx @@ -10,7 +10,6 @@ authors: url: https://github.com/Benjie image_url: https://github.com/Benjie.png tags: [0.1] -hide_table_of_contents: true --- import styles from "@site/src/css/common.module.css"; @@ -21,9 +20,9 @@ In the first Grafast Working Group, we outlined 4 major issues that needed to be addressed before we could think about general release. With this release, 3 of these are now complete! -- ✅⤵️ Global dependencies - solved via "unary" steps -- ✅⤵️ Early exit - solved via "flags" -- ✅🎉 **Eradicating eval - this release!** +- ✅⤵️ Global dependencies — solved via “unary” steps +- ✅⤵️ Early exit — solved via “flags” +- ✅🎉 **Eradicating eval — this release!** - 🤔🔜 Polymorphism We’re proud to announce that the third of these, eradicating eval, is now @@ -53,8 +52,10 @@ add plan resolvers to fields and arguments, you can no longer attach used a lot in PostGraphile and its various plugins, but very few people (no-one?) used externally so it was ripe for removal. -That problematic query that took 4 minutes to plan before? It now takes 1.1ms to -plan, yielding a 200,000x speedup! + + That problematic query that took 4 minutes to plan before? It now takes 1.1ms + to plan, yielding a 200,000x speedup! + @@ -75,8 +76,8 @@ the pull requests where the changes occurred. Because we’ve removed `inputPlan`, the `fieldArgs.get(key)` method is no more; instead use `fieldArgs.getRaw(key)` which is equivalent unless the inputs had -plans (which they cannot any more). You'd know if you had plans on your inputs, -it's very unlikely you did if you were writing your own Gra*fast* schema. +plans (which they cannot any more). You’d know if you had plans on your inputs, +it’s very unlikely you did if you were writing your own Gra*fast* schema. #### Converting `applyPlan` and `inputPlan` @@ -89,7 +90,7 @@ in our plan diagram. We’ve managed to make this new runtime system very similar in shape to the old plan-time system (largely enabled by how closely we managed to get the Gra*fast* plan syntax to the syntax of code you would normally write at -runtime), so if you do need to transform any it shouldn't take much effort. The +runtime), so if you do need to transform any it shouldn’t take much effort. The first change is to rename `applyPlan` to `apply`, and `inputPlan` to `baked`. From there, your code might just work straight away, or it might need some more small tweaks (e.g. `fieldArgs` is no longer present, it’s been replaced with @@ -120,3 +121,83 @@ renamed it to simply `Step`. _We have kept an ExecutableStep export for backwards compatibility._ + +## makeGrafastSchema + +- 🚨 The structure of `makeGrafastSchema` as it relates to arguments and input + object fields has changed a little; use TypeScript to guide you. I’m hoping + this is the last change of its kind before release. +- New shortcuts added for argument `applyPlan()` and input field `apply()` + methods. +- Trimmed a load of unnecessary exported code, such as empty objects and field + resolvers that do the same as the default field resolver. +- Fix bug in `makeGrafastSchema` that fails to build schema sometimes if a field + uses a function shortcut rather than object definition. +- Fix bug in `makeGrafastSchema` that sometimes doesn’t allow defining input + objects + +🚨 If you use `graphile-export` to export your schema as executable code, be +sure to regenerate your schemas as the old generated code could be +misinterpreted by the new `makeGrafastSchema`. + +## Improved plan diagrams + +- Plan diagrams now reveal (via `@s` text) if a step is meant to be streamed. +- Constant steps improved. +- `Object: null prototype` simplified to `§` in output. +- Hoist steps during `optimize` phase. +- We no longer render dependencies on the `undefined` constant, because it’s + messy and doesn’t add value +- We group when there are multiple dependencies to the same step from the same + step, and label the line with the count instead. + +## Step classes + +When writing your own step classes: + +- `ExecutionValue` has gained a new `.unaryValue()` method that returns the + unary value for unary execution values, and throws an error for non-unary + execution values. This is much safer than the previous `.at(0)` trick which + did not assert that you were actually dealing with a unary execution value. +- If you were using `@stream` (incremental delivery) and had written your own + `Step` class with stream support, first of all: amazing! Please let me know + you did that (_via email or [Discord](https://discord.gg/graphile)_)! + Secondly, you’ll need to either rename your `stream` function to `execute` or + merge its code into your existing `execute` method if you have one. It turns + out there wasn’t much point in separating them, and you can confer a lot of + benefit from merging them. + +## Other improvements + +- Compatible mutation operations can now complete synchronously via + `grafastSync()` +- Fixes bug in input objects where keys that weren’t set would still be present + with value `undefined` +- Fix bug in step caching relating to polymorphism +- New `items()` conventional method for extracting the items from a collection + (makes for easier compatibility with connections) +- Error handling improved +- Lists improved — especially error handling and deduplication logic; as well as + allowing returning connection-capable steps in list positions +- Optimization to Gra*fast*’s internal execution values, which are used heavily + in hot paths. + +## Thank you Sponsors + +Gra*fast* is crowd-funded open-source software, they rely on +crowd-sourced funding from individuals and companies to keep advancing. + +If your company benefits from Gra*fast*, PostGraphile or the wider Graphile +suite, you should consider asking them to fund our work. By significantly +reducing the amount of work needed to achieve business goals and reducing +running costs, Graphile’s software results in huge time and money savings for +users. We encourage companies to contribute a portion of these savings back, +enabling the projects to advance more rapidly, and result in even greater +savings for your company. +[Find out more about sponsorship on graphile.org](https://graphile.org/sponsor/). + +
+ +![Thank you](../static/img/news/thank-you.svg) + +
diff --git a/grafast/website/static/img/news/thank-you.svg b/grafast/website/static/img/news/thank-you.svg new file mode 100644 index 0000000000..c02dbb6e39 --- /dev/null +++ b/grafast/website/static/img/news/thank-you.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From fb2373f10389a8a23a9ec50a25d64263a69f6a1c Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:33:19 +0100 Subject: [PATCH 02/10] styling tweaks --- grafast/website/src/css/common.module.css | 4 + grafast/website/static/img/news/thank-you.svg | 388 +++++++++--------- 2 files changed, 200 insertions(+), 192 deletions(-) diff --git a/grafast/website/src/css/common.module.css b/grafast/website/src/css/common.module.css index 053796ceef..6d23fae854 100644 --- a/grafast/website/src/css/common.module.css +++ b/grafast/website/src/css/common.module.css @@ -49,6 +49,10 @@ font-size: 1.25rem; } +[data-theme="dark"] .intro { + color: var(--ifm-color-primary-lighter); +} + .intro li, code { font-style: normal; diff --git a/grafast/website/static/img/news/thank-you.svg b/grafast/website/static/img/news/thank-you.svg index c02dbb6e39..0ef95fa3d7 100644 --- a/grafast/website/static/img/news/thank-you.svg +++ b/grafast/website/static/img/news/thank-you.svg @@ -12,222 +12,226 @@ + id="g19" + transform="translate(0.05880416,3.9027222)"> - - + id="g18"> + + + + + + + + + + + + + stroke="#000000" + stroke-width="1.0507" + d="m 212.88088,66.424179 a 4.0969822,4.0969822 0 0 0 -5.43184,2.01635 c -1.16973,2.544634 1.92034,7.776975 2.82224,11.288944 3.21142,-1.585945 9.42183,-2.435815 10.64543,-5.110874 a 4.0969822,4.0969822 0 0 0 -5.72807,-5.282194 4.0969822,4.0969822 0 0 0 -2.30776,-2.912226 z" + id="path21" + style="fill:#e10098;fill-opacity:1;stroke:#1b1b3d;stroke-opacity:1" /> + stroke="#000000" + stroke-width="0.899522" + d="m 186.57012,32.038489 a 3.5149386,3.5149386 0 0 0 -4.65742,1.726622 c -1.00151,2.180075 1.6503,6.666673 2.4229,9.674755 2.74944,-1.360577 8.07057,-2.091273 9.12136,-4.379247 a 3.5149386,3.5149386 0 0 0 -4.90821,-4.526457 3.5149386,3.5149386 0 0 0 -1.97863,-2.495673 z m -85.41289,-9.925165 a 3.5149386,3.5149386 0 0 0 -1.85688,4.607473 c 0.94139,2.208617 6.03899,3.270067 8.78518,4.723154 0.84776,-2.949583 3.88936,-7.374352 2.90282,-9.694277 a 3.5149386,3.5149386 0 0 0 -6.65075,0.580582 3.5149386,3.5149386 0 0 0 -3.18037,-0.216932 z" + id="path22" + style="fill:#e10098;fill-opacity:1;stroke:#1b1b3d;stroke-opacity:1" /> + stroke="#000000" + stroke-width="2.52471" + d="m 145.02714,44.874385 a 9.8342691,9.8342691 0 0 0 -11.06382,8.4239 c -0.89855,6.661641 9.83187,16.481256 14.34129,23.882734 l 0.0319,0.05789 c 6.25984,-5.885656 19.91675,-12.17746 20.86508,-19.170117 a 9.8342691,9.8342691 0 0 0 -16.83907,-8.122693 9.8342691,9.8342691 0 0 0 -7.33544,-5.071704 z" + id="path23" + style="fill:#e10098;fill-opacity:1;stroke:#1b1b3d;stroke-opacity:1" /> + stroke="#000000" + stroke-width="2.15054" + d="m 39.883144,32.149216 a 8.3753806,8.3753806 0 0 0 -5.443903,10.521555 c 1.735756,5.451966 13.596173,9.113734 19.795511,13.180021 2.666436,-6.813388 10.887448,-16.633351 9.063442,-22.364587 a 8.3753806,8.3753806 0 0 0 -15.925816,-0.105993 8.3753806,8.3753806 0 0 0 -7.48937,-1.227219 z" + id="path24-56" + style="fill:#e10098;fill-opacity:1;stroke:#1b1b3d;stroke-opacity:1" /> - - - - - - - - - - + id="g16" + transform="matrix(1.0246329,0.08061269,-0.08061269,1.0246329,2.1945623,-15.443091)"> + id="g15"> + id="g14-3" + style="fill:#1b1b3d;fill-opacity:1" + transform="translate(1.5068401,1.397264)"> + + + + stroke-width="3.99871" + d="m 244.1196,136.564 q -3.80886,-0.4284 -7.57568,-1.72537 -3.71086,-1.33775 -5.99996,-3.17484 -0.42575,-1.99996 -0.52927,-3.97224 -0.10869,-1.96428 -0.18599,-5.61597 l 0.0186,-0.16486 q 0.18175,-0.62597 0.80592,-0.88538 1.89876,1.46355 3.70718,2.32192 1.81086,0.79872 4.06405,1.05214 l 1.28935,0.14505 0.85198,0.15144 q 1.23016,0.13836 2.56229,-0.0971 0.73122,-0.18317 1.07796,-0.90616 l -2.68389,-1.71455 q -3.097,-1.92367 -5.5272,-3.99068 -2.51164,-2.29449 -3.35153,-5.48401 -0.40027,-1.73167 -0.1768,-3.71854 0.5425,-4.82342 3.82555,-7.44647 2.87396,-2.335159 7.39738,-2.969381 3.91577,-0.48424 8.47287,0.02832 2.68438,0.301921 7.33556,1.424375 0.47003,0.15989 1.32052,0.362566 l 1.5745,0.50243 q 1.78961,0.53091 2.64777,0.62743 0.0507,0.006 0.14305,0.17448 l 0.23589,0.30051 q 0.16857,0.40423 0.3884,0.42896 l 0.10573,0.0119 -0.0203,1.13214 q -0.0903,0.80319 -0.0329,1.73861 0.0137,1.36284 -0.16086,2.91428 -0.15116,1.3443 -0.38168,1.90914 -0.39178,1.04754 -1.13928,1.45149 l -4.92025,-1.20409 -1.28512,-0.14455 q -1.82621,-0.2054 -4.22788,-0.0902 l -1.81734,0.17231 q -0.65022,0.0339 -0.6621,0.13958 -0.14505,1.28934 1.38938,2.60491 0.75519,0.51729 1.52177,0.93315 0.77747,0.35714 0.9807,0.49129 3.84303,1.57094 6.4292,4.68717 1.19505,1.44008 1.78491,2.97047 0.58986,1.53039 0.43866,2.87469 -0.0903,0.80321 -0.40488,1.69677 -0.83216,3.9732 -3.84936,6.63043 -2.92422,2.32524 -7.0288,3.11786 -3.57943,0.84314 -8.40709,0.30015 z" + id="path27-2" + style="fill:#1b1b3d;fill-opacity:1;stroke-width:2.2511;stroke-dasharray:none" /> + + + + - - - - - - - + id="g14"> + + + + stroke-width="3.99871" + d="m 244.1196,136.564 q -3.80886,-0.4284 -7.57568,-1.72537 -3.71086,-1.33775 -5.99996,-3.17484 -0.42575,-1.99996 -0.52927,-3.97224 -0.10869,-1.96428 -0.18599,-5.61597 l 0.0186,-0.16486 q 0.18175,-0.62597 0.80592,-0.88538 1.89876,1.46355 3.70718,2.32192 1.81086,0.79872 4.06405,1.05214 l 1.28935,0.14505 0.85198,0.15144 q 1.23016,0.13836 2.56229,-0.0971 0.73122,-0.18317 1.07796,-0.90616 l -2.68389,-1.71455 q -3.097,-1.92367 -5.5272,-3.99068 -2.51164,-2.29449 -3.35153,-5.48401 -0.40027,-1.73167 -0.1768,-3.71854 0.5425,-4.82342 3.82555,-7.44647 2.87396,-2.335159 7.39738,-2.969381 3.91577,-0.48424 8.47287,0.02832 2.68438,0.301921 7.33556,1.424375 0.47003,0.15989 1.32052,0.362566 l 1.5745,0.50243 q 1.78961,0.53091 2.64777,0.62743 0.0507,0.006 0.14305,0.17448 l 0.23589,0.30051 q 0.16857,0.40423 0.3884,0.42896 l 0.10573,0.0119 -0.0203,1.13214 q -0.0903,0.80319 -0.0329,1.73861 0.0137,1.36284 -0.16086,2.91428 -0.15116,1.3443 -0.38168,1.90914 -0.39178,1.04754 -1.13928,1.45149 l -4.92025,-1.20409 -1.28512,-0.14455 q -1.82621,-0.2054 -4.22788,-0.0902 l -1.81734,0.17231 q -0.65022,0.0339 -0.6621,0.13958 -0.14505,1.28934 1.38938,2.60491 0.75519,0.51729 1.52177,0.93315 0.77747,0.35714 0.9807,0.49129 3.84303,1.57094 6.4292,4.68717 1.19505,1.44008 1.78491,2.97047 0.58986,1.53039 0.43866,2.87469 -0.0903,0.80321 -0.40488,1.69677 -0.83216,3.9732 -3.84936,6.63043 -2.92422,2.32524 -7.0288,3.11786 -3.57943,0.84314 -8.40709,0.30015 z" + id="path27" + style="fill:#00c268;fill-opacity:1;stroke-width:2.2511;stroke-dasharray:none" /> + + + + - - - - - - - - - - - + id="g13" + transform="matrix(1.1250683,0.03293113,-0.03293113,1.1250683,-13.321172,-5.3875244)"> + + + + + + From a31d7c412d4eec75088fc3cf96976b98d6e4e1a9 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:33:54 +0100 Subject: [PATCH 03/10] PostGraphile News initial commit --- .../news/2025-03-24-beta-40-release.mdx | 106 ++++++++++ .../website/src/css/common.module.css | 5 + .../website/static/img/news/thank-you.svg | 188 ++++++++++++++++++ 3 files changed, 299 insertions(+) create mode 100644 postgraphile/website/news/2025-03-24-beta-40-release.mdx create mode 100644 postgraphile/website/static/img/news/thank-you.svg diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx new file mode 100644 index 0000000000..e1b2506502 --- /dev/null +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -0,0 +1,106 @@ +--- +title: Major PostGraphile V5 beta release +description: A lot has been written behind the scenes to make PostGraphile V5 even better! +slug: 2025-03-24-beta-40-release +authors: + - name: Benjie + title: Creator of PostGraphile + url: https://github.com/Benjie + image_url: https://github.com/Benjie.png +tags: [Beta] +hide_table_of_contents: false +toc_max_heading_level: 2 +--- + +import styles from "@site/src/css/common.module.css"; + +

+ +In the first Grafast Working Group, we outlined 4 major issues in Grafast +that needed to be addressed before we could think about general release. With +this release, 3 of these are now complete! + +- ✅⤵️ Global dependencies - solved via "unary" steps +- ✅⤵️ Early exit - solved via "flags" +- ✅🎉 **Eradicating eval - this release!** +- 🤔🔜 Polymorphism + +We’re proud to announce that the third of these, eradicating eval, is now +addressed with the launch of `grafast@0.1.1-beta.21`, and the approach has been +fully adopted and tested via incorporation into `postgraphile@5.0.0-beta.40`. + +

+ +### SQL generation moved to runtime + +PostGraphile's various SQL-running steps like PgSelectStep now build their +queries at runtime rather than plantime. They use the "builder" pattern, where +much of the SQL query can be established at plan-time, but final tweaks can be +applied at run-time (register tweaks via the `$pgSelect.apply($callback)` +method) before the query is built. + +### SQL efficiency increased + +Since we have more information at run-time, our SQL queries were able to become +even simpler, 10% smaller on average across our test suite! This nets us a +modest performance improvement inside PostgreSQL, but the shift to runtime does +cost us a little performance in the JS layer since queries now need to be built +for every request, rather than once per plan. We're happy with this tradeoff; +one of the core goals of PostGraphile V5 (and the motivation for Gra*fast* in the +first place) was to shift load from the PostgreSQL layer (which is non-trivial +to scale) to the Node.js layer (which is easy to scale horizontally). + +### Postgres Arrays now parse 5x faster + +I've also [backported](https://github.com/bendrucker/postgres-array/pull/19) +these [fixes](https://github.com/bendrucker/postgres-array/pull/20) into the +`postgres-array` npm module for everyone that uses `pg` to benefit from. + +### Easier to write SQL fragments + +Added a new feature to `pg-sql2` that allows us to handle non-SQL parameter +embeds with custom code, making it easier to write custom SQL, e.g. if a value +is already coming from SQL you can embed it directly without having to invoke +placeholder: + +```diff + const $fooId = $foo.get('id'); +-$pgSelect.where(sql`foo_id = ${$pgSelect.placeholder($fooId)}`); ++$pgSelect.where(sql`foo_id = ${$fooId}`); +``` + +We've also added the ability to embed dynamic SQL fragments that can be +dependent on runtime values (these values must be unary, i.e. they must come +from GraphQL field arguments or derivatives thereof): + +```ts +const $includeArchived = fieldArgs.getRaw("includeArchived"); +const $condition = lambda($includeArchived, (includeArchived) => + includeArchived ? sql.true : sql`is_archived is false`, +); +$pgSelect.where($condition); +``` + +### Join our testing community + +If you use Discord, join our server at [https://discord.gg/graphile](https://discord.gg/graphile) and chat away with other V5 users — talk over the new features, discuss any issues you encounter and explore different ways of using the new projects. We look forward to welcoming you and hearing of your suggestions and successes with V5! + +## Thank you Sponsors + +PostGraphile is crowd-funded open-source software, they rely on +crowd-sourced funding from individuals and companies to keep advancing. + +If your company benefits from PostGraphile or the wider Graphile +suite, you should consider asking them to fund our work. By significantly +reducing the amount of work needed to achieve business goals and reducing +running costs, Graphile’s software results in huge time and money savings for +users. We encourage companies to contribute a portion of these savings back, +enabling the projects to advance more rapidly, and result in even greater +savings for your company. +[Find out more about sponsorship on graphile.org](https://graphile.org/sponsor/). + +
+ +![Thank you](../static/img/news/thank-you.svg) + +
diff --git a/postgraphile/website/src/css/common.module.css b/postgraphile/website/src/css/common.module.css index 4dd007e8bc..abc983e5d6 100644 --- a/postgraphile/website/src/css/common.module.css +++ b/postgraphile/website/src/css/common.module.css @@ -165,3 +165,8 @@ tt { [data-theme="dark"] .intro { color: var(--ifm-color-primary-lighter); } + +.intro li, +code { + font-style: normal; +} diff --git a/postgraphile/website/static/img/news/thank-you.svg b/postgraphile/website/static/img/news/thank-you.svg new file mode 100644 index 0000000000..227c797e80 --- /dev/null +++ b/postgraphile/website/static/img/news/thank-you.svg @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From b90f633dadb7b282542d27ecc9169010b4d8d1bc Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:44:42 +0100 Subject: [PATCH 04/10] Finish PostGraphile article --- .../website/news/2025-03-24-beta-40-release.mdx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx index e1b2506502..04554e3209 100644 --- a/postgraphile/website/news/2025-03-24-beta-40-release.mdx +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -31,6 +31,13 @@ fully adopted and tested via incorporation into `postgraphile@5.0.0-beta.40`.

+## What does this mean for PostGraphile? + +Gra*fast* is the underlying execution engine of PostGraphile, written to maximize the +declarative nature of GraphQL to give you a smooth and efficient query planning experience. +While PostGraphile users need not to intricately know of the internals of Gra*fast*, this +focus of eradicating eval from Gra*fast* has given PostGraphile users some new benefits. + ### SQL generation moved to runtime PostGraphile's various SQL-running steps like PgSelectStep now build their @@ -50,6 +57,8 @@ one of the core goals of PostGraphile V5 (and the motivation for Gra*fast* in th first place) was to shift load from the PostgreSQL layer (which is non-trivial to scale) to the Node.js layer (which is easy to scale horizontally). + + ### Postgres Arrays now parse 5x faster I've also [backported](https://github.com/bendrucker/postgres-array/pull/19) @@ -87,7 +96,7 @@ If you use Discord, join our server at [https://discord.gg/graphile](https://dis ## Thank you Sponsors -PostGraphile is crowd-funded open-source software, they rely on +PostGraphile is crowd-funded open-source software, it relies on crowd-sourced funding from individuals and companies to keep advancing. If your company benefits from PostGraphile or the wider Graphile From 3f044091d383b63ba28aabbfbc4bc4a0d2ea83a2 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:45:02 +0100 Subject: [PATCH 05/10] implement intro style --- ...-03-beta-release.md => 2023-08-03-beta-release.mdx} | 10 ++++++++-- postgraphile/website/src/css/common.module.css | 1 - 2 files changed, 8 insertions(+), 3 deletions(-) rename postgraphile/website/news/{2023-08-03-beta-release.md => 2023-08-03-beta-release.mdx} (96%) diff --git a/postgraphile/website/news/2023-08-03-beta-release.md b/postgraphile/website/news/2023-08-03-beta-release.mdx similarity index 96% rename from postgraphile/website/news/2023-08-03-beta-release.md rename to postgraphile/website/news/2023-08-03-beta-release.mdx index 10507483ed..3b4887ca19 100644 --- a/postgraphile/website/news/2023-08-03-beta-release.md +++ b/postgraphile/website/news/2023-08-03-beta-release.mdx @@ -16,7 +16,13 @@ hide_table_of_contents: false toc_max_heading_level: 2 --- -### It’s finally here! The day has come that you can get your hands on an _early release_ of PostGraphile Version 5; but we do have an ask: please help us to get it ready for release. +import styles from "@site/src/css/common.module.css"; + +

+ +It’s finally here! The day has come that you can get your hands on an _early release_ of PostGraphile Version 5; but we do have an ask: please help us to get it ready for release. + +

We need help writing automated tests, validating it works in your real-world applications, improving the documentation, keeping up with issues and community support, porting plugins, smoothing edges, and as always we need financial support so we can keep investing our time into V5 and our other projects. @@ -36,7 +42,7 @@ It has taken us 3.5 years to get to this point and we’re pretty happy with the **Help us to educate people about V5.** We don’t have a marketing department, we cannot afford a developer relations team or to sponsor big events. We’ll need your help to get the word out about PostGraphile V5, when the time comes; in the meantime we could really do with some help building example applications and tutorials to help people get started. - + ## What does “beta” mean for PostGraphile? diff --git a/postgraphile/website/src/css/common.module.css b/postgraphile/website/src/css/common.module.css index abc983e5d6..91dbe7a850 100644 --- a/postgraphile/website/src/css/common.module.css +++ b/postgraphile/website/src/css/common.module.css @@ -159,7 +159,6 @@ tt { color: var(--ifm-color-primary-darker); font-style: italic; font-size: 1.25rem; - padding-bottom: 1rem; } [data-theme="dark"] .intro { From a353baa5660ba4d93cf22113cb6a936b07ea2539 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:54:13 +0100 Subject: [PATCH 06/10] editorial tweak --- postgraphile/website/news/2025-03-24-beta-40-release.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx index 04554e3209..963f40d3fd 100644 --- a/postgraphile/website/news/2025-03-24-beta-40-release.mdx +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -35,7 +35,7 @@ fully adopted and tested via incorporation into `postgraphile@5.0.0-beta.40`. Gra*fast* is the underlying execution engine of PostGraphile, written to maximize the declarative nature of GraphQL to give you a smooth and efficient query planning experience. -While PostGraphile users need not to intricately know of the internals of Gra*fast*, this +Users of PostGraphile are not required to deeply understand the internals of Gra*fast*, this focus of eradicating eval from Gra*fast* has given PostGraphile users some new benefits. ### SQL generation moved to runtime From 394d27723290ec085cfbc074af126e9a1a9c61f4 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 3 Apr 2025 12:04:05 +0100 Subject: [PATCH 07/10] oops missing word --- postgraphile/website/news/2025-03-24-beta-40-release.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx index 963f40d3fd..5d1528997d 100644 --- a/postgraphile/website/news/2025-03-24-beta-40-release.mdx +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -35,7 +35,7 @@ fully adopted and tested via incorporation into `postgraphile@5.0.0-beta.40`. Gra*fast* is the underlying execution engine of PostGraphile, written to maximize the declarative nature of GraphQL to give you a smooth and efficient query planning experience. -Users of PostGraphile are not required to deeply understand the internals of Gra*fast*, this +Whilst users of PostGraphile are not required to deeply understand the internals of Gra*fast*, this focus of eradicating eval from Gra*fast* has given PostGraphile users some new benefits. ### SQL generation moved to runtime From ff32d67681950c79702e5a02443a9dc979b828e2 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Sat, 26 Apr 2025 09:05:17 +0100 Subject: [PATCH 08/10] tweaks --- postgraphile/website/news/2023-04-26-alpha-release.md | 2 +- postgraphile/website/news/2023-08-03-beta-release.mdx | 2 +- postgraphile/website/news/2025-03-24-beta-40-release.mdx | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/postgraphile/website/news/2023-04-26-alpha-release.md b/postgraphile/website/news/2023-04-26-alpha-release.md index 17cb3fe820..0ae8d07ad3 100644 --- a/postgraphile/website/news/2023-04-26-alpha-release.md +++ b/postgraphile/website/news/2023-04-26-alpha-release.md @@ -4,7 +4,7 @@ description: PostGraphile Version 5 is now ready to run in some production envir slug: 2023-04-26-version-5-alpha authors: - name: Benjie - title: Creator of PostGraphile + title: PostGraphile Maintainer url: https://github.com/Benjie image_url: https://github.com/Benjie.png - name: Jem diff --git a/postgraphile/website/news/2023-08-03-beta-release.mdx b/postgraphile/website/news/2023-08-03-beta-release.mdx index 3b4887ca19..7dce884332 100644 --- a/postgraphile/website/news/2023-08-03-beta-release.mdx +++ b/postgraphile/website/news/2023-08-03-beta-release.mdx @@ -4,7 +4,7 @@ description: It’s finally here! The day has come that you can get your hands o slug: 2023-08-03-version-5-beta authors: - name: Benjie - title: Creator of PostGraphile + title: PostGraphile Maintainer url: https://github.com/Benjie image_url: https://github.com/Benjie.png - name: Jem diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx index 5d1528997d..b663546c5b 100644 --- a/postgraphile/website/news/2025-03-24-beta-40-release.mdx +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -4,7 +4,7 @@ description: A lot has been written behind the scenes to make PostGraphile V5 ev slug: 2025-03-24-beta-40-release authors: - name: Benjie - title: Creator of PostGraphile + title: PostGraphile Maintainer url: https://github.com/Benjie image_url: https://github.com/Benjie.png tags: [Beta] @@ -61,7 +61,7 @@ to scale) to the Node.js layer (which is easy to scale horizontally). ### Postgres Arrays now parse 5x faster -I've also [backported](https://github.com/bendrucker/postgres-array/pull/19) +We've also [backported](https://github.com/bendrucker/postgres-array/pull/19) these [fixes](https://github.com/bendrucker/postgres-array/pull/20) into the `postgres-array` npm module for everyone that uses `pg` to benefit from. From 74ece21a08ce332e4e18b85b569fc139f924452b Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Sat, 26 Apr 2025 09:11:51 +0100 Subject: [PATCH 09/10] tweaks --- postgraphile/website/news/2025-03-24-beta-40-release.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx index b663546c5b..24e4a9f58e 100644 --- a/postgraphile/website/news/2025-03-24-beta-40-release.mdx +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -41,7 +41,7 @@ focus of eradicating eval from Gra*fast* has given PostGraphile users some new b ### SQL generation moved to runtime PostGraphile's various SQL-running steps like PgSelectStep now build their -queries at runtime rather than plantime. They use the "builder" pattern, where +queries at runtime rather than plan-time. They use the "builder" pattern, where much of the SQL query can be established at plan-time, but final tweaks can be applied at run-time (register tweaks via the `$pgSelect.apply($callback)` method) before the query is built. From 8ed9137c3c169f9220953feae72083382cb7c57f Mon Sep 17 00:00:00 2001 From: Benjie Date: Sat, 26 Apr 2025 09:14:02 +0100 Subject: [PATCH 10/10] Apply suggestions from code review --- .../website/news/2025-03-24-beta-40-release.mdx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/postgraphile/website/news/2025-03-24-beta-40-release.mdx b/postgraphile/website/news/2025-03-24-beta-40-release.mdx index 24e4a9f58e..65886601dc 100644 --- a/postgraphile/website/news/2025-03-24-beta-40-release.mdx +++ b/postgraphile/website/news/2025-03-24-beta-40-release.mdx @@ -33,10 +33,17 @@ fully adopted and tested via incorporation into `postgraphile@5.0.0-beta.40`. ## What does this mean for PostGraphile? -Gra*fast* is the underlying execution engine of PostGraphile, written to maximize the -declarative nature of GraphQL to give you a smooth and efficient query planning experience. -Whilst users of PostGraphile are not required to deeply understand the internals of Gra*fast*, this -focus of eradicating eval from Gra*fast* has given PostGraphile users some new benefits. +Gra*fast* is a cutting-edge GraphQL planning and execution engine that leverages +the declarative nature of GraphQL to execute your requests with maximal +efficiency no matter the data sources you're working with. PostGraphile V5 uses +Gra*fast* as the underlying execution engine, allowing it to build much more +efficient SQL queries than PostGraphile V4 could achieve whilst also +significantly expanding the capabilities of the system - not to mention solving +some longstanding issues! + +Whilst users of PostGraphile are not required to deeply understand the internals +of Gra*fast*, this focus of eradicating `$step.eval*()` methods from Gra*fast* +has given PostGraphile users some new benefits. ### SQL generation moved to runtime @@ -94,7 +101,7 @@ $pgSelect.where($condition); If you use Discord, join our server at [https://discord.gg/graphile](https://discord.gg/graphile) and chat away with other V5 users — talk over the new features, discuss any issues you encounter and explore different ways of using the new projects. We look forward to welcoming you and hearing of your suggestions and successes with V5! -## Thank you Sponsors +## Thank you sponsors! PostGraphile is crowd-funded open-source software, it relies on crowd-sourced funding from individuals and companies to keep advancing.