Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
74 changes: 59 additions & 15 deletions .clj-kondo/config.edn
Original file line number Diff line number Diff line change
@@ -1,15 +1,59 @@
{:lint-as {cljs-thread.core/=>> clojure.core/->>}
:hooks {:macroexpand {cljs-thread.core/in cljs-thread.core/in
cljs-thread.core/future cljs-thread.core/future
cljs-thread.core/spawn cljs-thread.core/spawn
cljs-thread.core/wait cljs-thread.core/wait
cljs-thread.core/in? cljs-thread.core/in?}}
:config-in-call
{cljs-thread.core/in
{:linters {:unresolved-symbol {:exclude [yield]}}}
cljs-thread.core/future
{:linters {:unresolved-symbol {:exclude [yield]}}}
cljs-thread.core/wait
{:linters {:unresolved-symbol {:exclude [yield]}}}
cljs-thread.core/spawn
{:linters {:unresolved-symbol {:exclude [yield]}}}}}
{:linters
{;; Suppress false positives from deftype macro expansions
:unresolved-symbol {:exclude [(cljs-thread.eve.deftype.int-map)
(cljs-thread.eve.deftype.rb-tree)
;; These files use macro-injected symbols that kondo doesn't understand
;; goog/exportSymbol with namespace aliases
[cljs-thread.runner.thread-test-main deftype-test array-test
map-test vec-test list-test set-test large-scale-test
epoch-gc-test obj-test batch2-test batch3-test batch4-test
int-map-test rb-tree-test typed-array-test]]}

;; Suppress private var access in xray (it needs internal access)
:private-call {:level :off}

;; Wrong arity reports for protocol methods with specify
:invalid-arity {:skip-args [cljs.core/specify]}

;; Unused private vars - exclude false positives from macro usage
:unused-private-var {:exclude [cljs-thread.eve-perf-test/rcw-cycle!]}

;; Macros in :require-macros are used but kondo doesn't see them
:unused-referred-var {:level :warning}

;; inline def is sometimes used for debugging in test files
:inline-def {:level :warning}

;; Reduce noise from info-level hints
:single-operand-comparison {:level :off}
:single-key-in {:level :off}
:redundant-str-call {:level :off}
:redundant-let {:level :off}
:single-operand-use {:level :off}
:redundant-nested-call {:level :off}}

:lint-as {;; Tell kondo how to lint our macros
cljs-thread.core/in clojure.core/fn
cljs-thread.core/spawn clojure.core/fn
cljs-thread.core/future clojure.core/fn
cljs-thread.core/on-when clojure.core/when
cljs-thread.future/future clojure.core/fn}

:output {:exclude-files ["src/cljs_thread/eve/deftype/int_map.cljs"
"src/cljs_thread/eve/deftype/rb_tree.cljs"
;; simd_wasm has deeply nested loops that confuse kondo's paren matching
"src/cljs_thread/eve/deftype_proto/simd_wasm.cljs"
;; deftype-test uses macro-generated constructors
"test/cljs_thread/eve/deftype_test.cljs"
;; array_test uses specialized macros
"test/cljs_thread/eve/array_test.cljs"
;; direct_sab_sync_test uses future macro heavily
"test/cljs_thread/direct_sab_sync_test.cljs"
;; thread_test_main uses goog/exportSymbol with aliases
"test/cljs_thread/runner/thread_test_main.cljs"
;; pmap uses future macro
"src/cljs_thread/pmap.cljs"
;; db uses macro-injected yield
"src/cljs_thread/db.cljs"
;; sync uses specify with protocol methods
"src/cljs_thread/sync.cljs"]}}
42 changes: 42 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Deploy Ray Tracer Demo to GitHub Pages

on:
push:
branches: [main]
paths:
- 'docs/**'

workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Pages
uses: actions/configure-pages@v5
with:
enablement: true

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'docs'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
43 changes: 29 additions & 14 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,15 +1,30 @@
.calva
.clj-kondo/*
!.clj-kondo/config.edn
!.clj-kondo/net.clojars.john
.cpcache
/out
.nrep-port
target
shadow_dashboard/node_modules
shadow_dashboard/resources/public
!shadow_dashboard/resources/public/index.html
shadow_dashboard/.shadow-cljs
.shadow-cljs/
.clj-kondo/
out/
node_modules/
.cpcache/
.nrepl-port
*.log
.DS_Store
target/
.proxy-java-shim.env
.proxy-shim.pid
claude-code-web-bootstrap-clojure-sandbox/
script/proxy_shim.py
.chrome/
test-results/
docs/js/
**/cljs-runtime/
linux-install-*.sh
ex/**/docs/
ex/**/.calva/
ex/reagami/
*.calva-repl
.portal/
.lsp/
.portal
.vscode
build/
# Eve mmap atom domain files (created by tests/runtime)
*.slab[0-6]
*.slab[0-5].bm
*.root
*.rmap
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.0-alpha.5] - 2025-02-19

### Added
- EVE (Epoch-Versioned Entities) shared-memory persistent data structures
- `atom`, `hash-map`, `hash-set`, `vector`, `list` backed by SharedArrayBuffer
- Epoch-based garbage collection for safe cross-worker memory reclamation
- WASM-accelerated bitmap allocator with SIMD optimizations
- Debug logging module with goog-define DCE support
- Comprehensive documentation (13 guides)
- Raytracer example demonstrating parallel worker performance
- X-RAY memory diagnostics for slab allocator debugging

### Changed
- Improved error handling with debug-gated logging
- Better cross-origin isolation documentation

### Fixed
- Advanced compilation compatibility with shadow-cljs :node-test targets
- Worker module loading under code splitting

## [0.1.0-alpha.4] - 2025-01-XX

### Added
- Service Worker fallback for environments without COOP/COEP headers
- DOM proxy for cross-worker DOM access
- Binding conveyance for dynamic vars

### Changed
- Fat kernel architecture for worker initialization
- Improved sync layer performance

## [0.1.0-alpha.3] - 2024-XX-XX

### Added
- Initial alpha release
- Core threading primitives: `spawn`, `in`, `future`, `pmap`, `pcalls`, `pvalues`, `=>>`
- Browser (Web Workers) and Node.js (worker_threads) support
- Auto-detection of platform capabilities

[Unreleased]: https://github.com/johnmn3/cljs-thread/compare/v0.1.0-alpha.5...HEAD
[0.1.0-alpha.5]: https://github.com/johnmn3/cljs-thread/compare/v0.1.0-alpha.4...v0.1.0-alpha.5
[0.1.0-alpha.4]: https://github.com/johnmn3/cljs-thread/compare/v0.1.0-alpha.3...v0.1.0-alpha.4
[0.1.0-alpha.3]: https://github.com/johnmn3/cljs-thread/releases/tag/v0.1.0-alpha.3
Loading