Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
7ff9a15
Merge pull request #979 from joshamaju/effect-benchmark
cowboyd Feb 28, 2025
fb100eb
Added until function
Apr 3, 2025
d63b7d9
Updated documentation
Apr 3, 2025
49395b8
Updated all of the API links
Apr 3, 2025
45c61b6
Added feedback
Apr 10, 2025
f353592
Update lib/until.ts
Apr 11, 2025
8d8f96f
Update lib/until.ts
Apr 11, 2025
64bbce9
Merge pull request #990 from thefrontside/tm/v4-until
Apr 11, 2025
ace1e2c
docs: fix additional spelling and formatting issues
Apr 11, 2025
472323c
docs: update changelog with v4.0.0-alpha entries organized by version
Apr 12, 2025
49d67e4
Fixed formatting
Apr 12, 2025
8cf4d08
Add binary minheap priority queue for effect resolution
cowboyd May 1, 2025
056cd03
Add coroutine version bump on return
cowboyd May 3, 2025
ece8996
fix broken channel test based on new evaluation order
cowboyd May 6, 2025
93805a3
Undo workaround for lack of FIFO in instruction execution
cowboyd May 6, 2025
7737f1a
simplify the each test sequence to create less resources
cowboyd May 6, 2025
03372d2
docs: fix additional spelling and formatting issues
Apr 11, 2025
a40fa97
🔥Remove obsolete $await helper
cowboyd May 8, 2025
6e89b49
Merge pull request #1001 from thefrontside/tm/add-missing-commit
May 9, 2025
348f20c
Merge pull request #1002 from thefrontside/remove-await-helper
cowboyd May 9, 2025
64b549b
Merge pull request #994 from thefrontside/tm/update-changelog
May 9, 2025
94ca32a
enable preview packages
jbolda May 7, 2025
5f39cd4
Merge pull request #1003 from thefrontside/preview-packages-v4
jbolda May 12, 2025
100470b
get non-spawn run tests working
cowboyd May 13, 2025
3b12bc9
simplify coroutine api
cowboyd May 13, 2025
b8251d8
get some tests working mostly
cowboyd May 14, 2025
6be60c1
leaner, meaner trapset
cowboyd May 14, 2025
3d22d74
handle halt case where coroutine has not even started
cowboyd May 15, 2025
8d7ab9d
remove dead branches in reducer
cowboyd May 15, 2025
94c26bc
Merge branch 'priority-queue' into rewrite-task-internals
cowboyd May 16, 2025
9eb9857
remove defunct `Subscriber` type
cowboyd May 16, 2025
5d78045
All run/spawn tests now passing
cowboyd May 17, 2025
73fdbd9
Make sure `Do()` operations can actually raise errors
cowboyd May 19, 2025
531cd65
halt task on scope destroy, not the other way around
cowboyd May 22, 2025
b2f5ead
each test is working, race tests are deadlocked
cowboyd May 22, 2025
a8c9c40
take a stab at trap()
cowboyd May 22, 2025
da1cf57
fix incorrect test
cowboyd May 22, 2025
1b7efde
skip deadlocking tests
cowboyd May 23, 2025
79b9247
fixup trap
cowboyd May 23, 2025
4332637
first ask if a computation produced a result
cowboyd May 23, 2025
24f5a4d
implement userland trap in terms of existence of outcome first
cowboyd May 23, 2025
d1457d6
checkpoint
cowboyd May 23, 2025
5ad86bf
When crashing, lookup scope from the routine
cowboyd May 23, 2025
c21389d
unroll trap + cleanup
cowboyd May 23, 2025
2f05780
add test case for catching a crash at the appropriate time.
cowboyd Jun 3, 2025
3cc79df
try to simplify
cowboyd Jun 9, 2025
223fe6d
Use a crash context for linking tasks together
cowboyd Jun 9, 2025
77c9a8b
all run tests passing
cowboyd Jun 9, 2025
685e6f1
all teardown flows through halt()
cowboyd Jun 12, 2025
3ddd81b
Make halt idempotent
cowboyd Jun 12, 2025
fe59e6b
fix resource tests
cowboyd Jun 12, 2025
7dc3eee
Immediately transition to run level 2 when halting
cowboyd Jun 17, 2025
076e6f7
cleanup encapsulate and remove a bunch of dead code
cowboyd Jun 17, 2025
c1ae865
Extract Trap -> Boundary
cowboyd Jun 28, 2025
0346a19
thunk -> instruction
cowboyd Jun 28, 2025
72522cc
Use a boundary with a level indicating to invalidate instructions
cowboyd Jun 30, 2025
feaa080
begin unifying run levels
cowboyd Jun 30, 2025
1a4128d
Get run tests working
cowboyd Jul 4, 2025
234dc6a
Get ready for spawn tests
cowboyd Jul 4, 2025
223cb09
implement task group to start fixing spawn tests
cowboyd Jul 4, 2025
a6b4373
unify run levels with a `validate()` function with each instruction
cowboyd Jul 7, 2025
3159865
halt a task whenever its scope is halted
cowboyd Jul 7, 2025
937f92e
All tests green!
cowboyd Jul 7, 2025
e862aa2
remove old implementation
cowboyd Jul 8, 2025
33f2499
Shutdown all tasks when a failure occurs in any of them
cowboyd Jul 10, 2025
cda4c87
🧪 add test to make sure all() tears down all tasks when it fails
cowboyd Jul 10, 2025
f133ba9
Merge pull request #1006 from thefrontside/yet-another-rewrite-attempt
cowboyd Jul 10, 2025
4e6ea21
✅ Add test for task priority
cowboyd Jul 24, 2025
9980a46
Merge pull request #1010 from thefrontside/v4-test-task-priority
cowboyd Jul 24, 2025
46ebc22
✅ Add a test ensuring that a task can block its parent
cowboyd Jul 11, 2025
cbe6ab9
🐛 do not attempt to bundle dynamic `node:process` import in webpack
cowboyd Jul 24, 2025
552d7df
Merge pull request #1011 from thefrontside/v4-ensure-self
cowboyd Jul 24, 2025
c64dc04
Merge pull request #1012 from thefrontside/v4-safe-webpack
cowboyd Jul 24, 2025
02b2e94
✨ properly propagate errors from nested scopes
cowboyd Jul 31, 2025
eff9c3b
Merge pull request #1014 from thefrontside/v4-nested-scope-points
cowboyd Jul 31, 2025
0301a62
✨ add interval() helper to consume a stream of intervals, port from v3
jbolda Aug 4, 2025
e46ac5c
🐛 run resources at the priority level of their caller
cowboyd Aug 5, 2025
59f83af
Merge pull request #1017 from thefrontside/v4-resource-priority
cowboyd Aug 6, 2025
306002d
Merge pull request #1016 from thefrontside/interval-stream-v4
cowboyd Aug 6, 2025
b3b629a
Renamed actions page
Aug 10, 2025
670e512
Merge pull request #1021 from thefrontside/tm/rename-actions-page
Aug 10, 2025
b77fa70
Do not bind SIGTERM in windows
taras Oct 4, 2025
032ea4a
Run tests on windows as well
taras Oct 4, 2025
f06e9dc
Added windows-latest
taras Oct 4, 2025
681b8cc
Added .gitattributes: Created a .gitattributes file to ensure consist…
taras Oct 4, 2025
ffc913a
Added mjs files to gitattributes
taras Oct 4, 2025
1d8ce29
Do not run lint on docs and tasks
taras Oct 7, 2025
3074a06
Restored v3 main tests
taras Oct 7, 2025
13ce485
use cmd in windows
taras Oct 7, 2025
a773bab
Try pure node process executor
Oct 21, 2025
553d361
Don't need stream api
Oct 21, 2025
92c07de
Revert to tinyexec
Oct 26, 2025
28b0f76
Try terminating with windowns-ctrlc
Oct 26, 2025
6eb26da
Remove unnecessary postBuild step in node tests
Oct 26, 2025
ec131b7
Remove more unused code
Oct 26, 2025
fa2f4ec
Updated changelog
Oct 26, 2025
1a8df7b
Merge pull request #1032 from thefrontside/tm/no-sigterm-windows-v4
Oct 27, 2025
efef8e1
Add missing entries
Oct 28, 2025
7c9fcac
Merge pull request #1033 from thefrontside/tm/update-v4-changelog
Oct 28, 2025
fa5768d
🚚 forward port www to v3 (#1042)
cowboyd Dec 16, 2025
c3222c3
Fix bunch of little things (#1051)
Dec 23, 2025
b82cea3
add DRAFT migration guide (#1024)
cowboyd Dec 23, 2025
940b602
Add missing v4 changelog entries (#1053)
Dec 23, 2025
321e979
Added JSR and fixed link to v4 guides (#1055)
Dec 23, 2025
9d28e2b
Prepare v4 Changelog (#1043)
cowboyd Dec 23, 2025
e0663af
🎯 publish v4 on "latest" tag (#1057)
cowboyd Dec 23, 2025
7d6f0d6
Update publish.yml (#1059)
frontsidejack Dec 23, 2025
8976724
Change license from ISC to MIT (#1060)
Dec 23, 2025
dad87c3
use v6 GHA setup-node (#1061)
jbolda Dec 23, 2025
a314433
Revert to using case sensitive file system in Linux to build the webs…
frontsidejack Dec 28, 2025
7ac9d2d
Fix v3/v4 navigation to non-existent page and mobile sidebar in dark …
Dec 28, 2025
7502590
llms.txt and llms-full.txt (#1069)
Dec 30, 2025
0bb9399
Use h4 instead of h1 (#1070)
Jan 4, 2026
ee872d1
Agents file created using expert-guided corrective grounding techniqu…
Jan 5, 2026
6e5acb8
📝 document equivalents of `Promise.then` and shareable promise (#1065)
cowboyd Jan 5, 2026
57a8f51
✨ Set the canonical url for each page (#1076)
cowboyd Jan 14, 2026
3f41787
fix urls (#1077)
cowboyd Jan 15, 2026
23682cd
🙈 Ignore .env and .aider files (#1082)
cowboyd Jan 20, 2026
b162d38
Add Node/PNPM monorepo support for effectionx extensions (#1083)
Jan 20, 2026
153e420
🐛 fix: destroy task scope when halting to prevent memory leak (#1081)
cowboyd Jan 20, 2026
dd1c9cb
🐛 fix: move all task finalization into the scope destructor (#1085)
cowboyd Jan 20, 2026
76fbe50
📦 release 4.0.1 (#1086)
cowboyd Jan 20, 2026
08c4d9e
🚨 Add linting rule to prefer-let (#1084)
cowboyd Jan 21, 2026
d9788cc
🚨 lint and format www/ (#1088)
cowboyd Jan 22, 2026
253ce61
♻️ simplify spawn() by delegating to scope.run (#1078)
cowboyd Jan 26, 2026
cd00964
🐛 fix resource destruction order (#1091)
cowboyd Jan 28, 2026
9f3aa63
Effection 4.0.1 (#1092)
cowboyd Jan 28, 2026
bc07769
✨ Add blog to Effection website (#1094)
Feb 3, 2026
e605d1f
📦 move blog directory from root to www/ (#1097)
Feb 4, 2026
a0f3924
Why JavaScript Needs Structured Concurrency (#1103)
Feb 9, 2026
5748a2b
Fix structured concurrency post: clarify await vs caller lifetime (#1…
Feb 9, 2026
885f542
fix blog opening: use SPA component unmount instead of full navigatio…
Feb 10, 2026
40faacd
fix: normalize signal exit codes in test helper (#1109)
Feb 12, 2026
b567a10
chore: adds start-up benchmark
joshamaju Mar 6, 2025
268f224
chore: capture time inside benchmark operation
joshamaju Mar 6, 2025
82ae560
fix: apply Deno formatting and update scenario signatures
Feb 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Set default line ending behavior
* text=auto

# Explicitly set line endings for text files
*.ts text eol=lf
*.tsx text eol=lf
*.mjs text eol=lf
*.js text eol=lf
*.jsx text eol=lf
*.json text eol=lf
*.md text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.svg text eol=lf
*.css text eol=lf

# Binary files
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.woff binary
*.woff2 binary
7 changes: 7 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Motivation

<!-- Describe the problem or feature request this PR addresses -->

# Approach

<!-- Provide a brief summary of the changes made -->
37 changes: 37 additions & 0 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: preview

on: [pull_request]

permissions:
contents: read

jobs:
preview:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.x

- name: Get Version
id: vars
# this will pull the last tag off the current branch
run: echo ::set-output name=version::$(git describe --abbrev=0 --tags | sed 's/^effection-v//')-pr+$(git rev-parse HEAD)

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20.x
registry-url: https://registry.npmjs.com

- name: Build NPM
run: deno task build:npm ${{steps.vars.outputs.version}}

- name: Publish Preview Versions
run: npx pkg-pr-new publish './build/npm'
9 changes: 3 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,16 @@ jobs:
run: echo ::set-output name=version::$(echo ${{github.ref_name}} | sed 's/^effection-v//')

- name: Setup Node
uses: actions/setup-node@v4.1.0
uses: actions/setup-node@v6
with:
node-version: 18.x
registry-url: https://registry.npmjs.com
node-version: 24

- name: Build NPM
run: deno task build:npm ${{steps.vars.outputs.version}}

- name: Publish NPM
run: npm publish --access=public --tag=next
run: npm publish --access=public --tag=latest
working-directory: ./build/npm
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}

publish-jsr:
runs-on: ubuntu-latest
Expand Down
15 changes: 12 additions & 3 deletions .github/workflows/verify.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@ permissions:
contents: read

jobs:
test-deno:
runs-on: ubuntu-latest
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}

steps:
- name: checkout
Expand All @@ -28,7 +31,13 @@ jobs:
- name: lint
run: deno lint

- name: test
- name: test (Windows)
if: runner.os == 'Windows'
run: deno task test
shell: cmd

- name: test (Unix)
if: runner.os != 'Windows'
run: deno task test

test-node:
Expand Down
66 changes: 66 additions & 0 deletions .github/workflows/www.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: www
on:
workflow_dispatch: # Allows manual trigger
schedule:
- cron: "0 */8 * * *" # Runs every 8 hours
pull_request:
push:
branches:
- v4

jobs:
www:
runs-on: ubuntu-latest
timeout-minutes: 15

permissions:
id-token: write # Needed for auth with Deno Deploy
contents: read # Needed to clone the repository

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Deno
uses: denoland/setup-deno@v2
with:
deno-version: v2.6.1

- name: Serve Website
run: |
deno task dev &
until curl --output /dev/null --silent --head --fail http://127.0.0.1:8000; do
printf '.'
sleep 1
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JSR_API: ${{ secrets.JSR_API }}
timeout-minutes: 5
working-directory: ./www

- name: Download Staticalize
run: |
wget https://github.com/thefrontside/staticalize/releases/download/v0.2.2/staticalize-linux.tar.gz \
-O /tmp/staticalize-linux.tar.gz
tar -xzf /tmp/staticalize-linux.tar.gz -C /usr/local/bin
chmod +x /usr/local/bin/staticalize-linux

- name: Staticalize
run: |
staticalize-linux \
--site=http://127.0.0.1:8000 \
--output=www/built \
--base=https://effection.deno.dev

- run: npx pagefind --site built
working-directory: ./www

- name: Upload to Deno Deploy
uses: denoland/deployctl@v1
with:
project: effection
entrypoint: "jsr:@std/http/file-server"
root: www/built
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@

# Local Netlify folder
.netlify
/build/
/build/
/node_modules/
/.env
/.aider*
Loading