rip-lang 2.9.0 → 2.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +32 -2
- package/docs/BROWSER.md +8 -8
- package/docs/GUIDE.md +13 -13
- package/docs/INTERNALS.md +11 -11
- package/docs/RATIONALE.md +180 -0
- package/docs/REACTIVITY.md +5 -5
- package/docs/TYPES.md +1132 -0
- package/docs/dist/rip.browser.js +12 -36
- package/docs/dist/rip.browser.min.js +87 -87
- package/docs/dist/rip.browser.min.js.br +0 -0
- package/docs/examples/README.md +21 -142
- package/docs/examples/arrows.rip +3 -13
- package/docs/examples/module.rip +41 -31
- package/docs/examples/reactivity.rip +48 -0
- package/package.json +1 -1
- package/src/compiler.js +13 -3
- package/src/grammar/grammar.rip +3 -3
- package/src/grammar/solar.rip +2 -2
- package/src/lexer.js +0 -59
- package/src/parser.js +1 -1
- package/docs/PHILOSOPHY.md +0 -569
- package/docs/WHY-NOT-COFFEESCRIPT.md +0 -186
- package/docs/WHY-YES-RIP.md +0 -757
- package/docs/examples/object-syntax.rip +0 -74
- package/docs/examples/prototype.rip +0 -30
- package/docs/examples/sexpr.rip +0 -128
- package/docs/examples/use-loader.js +0 -9
- package/docs/examples/utils.rip +0 -20
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
<p><img src="rip.svg" alt="Rip Logo" width="100"></p>
|
|
2
|
-
|
|
3
|
-
# Why Not CoffeeScript: The Case Against Revival
|
|
4
|
-
|
|
5
|
-
## Executive Summary
|
|
6
|
-
|
|
7
|
-
CoffeeScript 2 already achieved the goal of modern JavaScript output in 2017. Any effort toward further CoffeeScript development in 2026 represents a misallocation of resources toward a language that has been definitively superseded by the JavaScript ecosystem's evolution. This document presents the compelling case for why CoffeeScript should remain a respected historical artifact rather than receive continued development.
|
|
8
|
-
|
|
9
|
-
**TL;DR:** The ecosystem has moved on. The tooling has rotted. The community has dispersed. TypeScript won the type safety war. Modern JavaScript absorbed the best ideas. What's left isn't worth the cost.
|
|
10
|
-
|
|
11
|
-
## The Fundamental Misconception
|
|
12
|
-
|
|
13
|
-
Many assume CoffeeScript needs updating to output ES6+. **This is false.** CoffeeScript 2 (released 2017) already generates:
|
|
14
|
-
- ES6 classes with `extends` and `super`
|
|
15
|
-
- Arrow functions with lexical `this`
|
|
16
|
-
- Destructuring assignments
|
|
17
|
-
- Template literals
|
|
18
|
-
- `for...of` loops
|
|
19
|
-
- ES6 modules (`import`/`export`)
|
|
20
|
-
- Spread operators
|
|
21
|
-
- Computed property names
|
|
22
|
-
|
|
23
|
-
The output is already modern. The problem isn't technical—it's existential.
|
|
24
|
-
|
|
25
|
-
## 1. Ecosystem Abandonment: The Network Effect in Reverse
|
|
26
|
-
|
|
27
|
-
### The Developer Desert
|
|
28
|
-
- **Hiring Crisis**: Try posting a "CoffeeScript Developer" position in 2026. You'll get tumbleweeds or developers who haven't touched it since 2015.
|
|
29
|
-
- **Knowledge Decay**: Senior developers who knew CoffeeScript have moved on. Junior developers have never heard of it.
|
|
30
|
-
- **AI Blindness**: GitHub Copilot, ChatGPT, and other AI assistants are trained on modern codebases. Their CoffeeScript suggestions are often outdated or incorrect.
|
|
31
|
-
- **Dead Community**: The CoffeeScript forum has ~5 posts per month. The TypeScript forum has ~500. The network effect that once benefited CoffeeScript now strangles it.
|
|
32
|
-
|
|
33
|
-
### Library Lockout
|
|
34
|
-
- **TypeScript Hegemony**: Every major library ships with `.d.ts` files. Using them from CoffeeScript means abandoning type safety entirely.
|
|
35
|
-
- **No Native Integrations**: Modern frameworks (Next.js, Nuxt, SvelteKit) assume TypeScript or JavaScript. CoffeeScript requires custom configuration that often breaks with updates.
|
|
36
|
-
- **Security Vulnerabilities**: When was the last time CoffeeScript's dependencies were audited? The maintenance burden falls on a tiny, overwhelmed community.
|
|
37
|
-
|
|
38
|
-
## 2. The Type Safety Revolution Left CoffeeScript Behind
|
|
39
|
-
|
|
40
|
-
### TypeScript Won by Solving Real Problems
|
|
41
|
-
- **Refactoring at Scale**: Rename a method in TypeScript, and your IDE updates every call site. In CoffeeScript, you grep and pray.
|
|
42
|
-
- **API Contracts**: TypeScript interfaces document and enforce API contracts. CoffeeScript relies on... documentation? Comments? Hope?
|
|
43
|
-
- **Compile-Time Catches**: TypeScript catches errors before runtime. CoffeeScript catches them... in production.
|
|
44
|
-
- **IntelliSense**: Modern developers expect autocomplete that actually works. CoffeeScript's IDE support is "here's a list of every word in your file."
|
|
45
|
-
|
|
46
|
-
### The Cost of Being Typeless in 2026
|
|
47
|
-
- **Integration Nightmare**: Every third-party library requires manual type annotations or living without IDE support
|
|
48
|
-
- **Team Scaling Breaks**: CoffeeScript works for 1-2 developers who hold the entire codebase in their heads. At 10+ developers, the lack of types becomes a coordination disaster.
|
|
49
|
-
- **No Migration Path**: You can gradually adopt TypeScript in a JavaScript codebase. CoffeeScript requires a full rewrite.
|
|
50
|
-
|
|
51
|
-
## 3. Tooling Degradation: Death by a Thousand Cuts
|
|
52
|
-
|
|
53
|
-
### IDE Abandonment
|
|
54
|
-
- **VS Code**: CoffeeScript extension last meaningful update: 2019. TypeScript: Updated weekly. The gap widens daily.
|
|
55
|
-
- **WebStorm**: CoffeeScript support officially deprecated as of 2024. JetBrains gave up.
|
|
56
|
-
- **Vim/Neovim**: CoffeeScript LSP? Might as well ask for a steam-powered smartphone.
|
|
57
|
-
- **GitHub Copilot**: Trained on modern codebases. CoffeeScript suggestions are often wrong or outdated.
|
|
58
|
-
- **Cursor/AI IDEs**: The future of development doesn't include CoffeeScript in their training data.
|
|
59
|
-
|
|
60
|
-
### Build Tool Afterthought
|
|
61
|
-
- **Vite**: Requires a third-party plugin that breaks every major update
|
|
62
|
-
- **Webpack**: CoffeeScript loader is in maintenance mode
|
|
63
|
-
- **Bun**: Can bundle TypeScript natively. CoffeeScript? "What's that?"
|
|
64
|
-
- **Deno**: Built for TypeScript-first development. CoffeeScript is alien technology.
|
|
65
|
-
|
|
66
|
-
### Developer Experience Regression
|
|
67
|
-
- **No Prettier Support**: Your team will have formatting wars like it's 2010
|
|
68
|
-
- **ESLint**: Limited rules, most plugins incompatible
|
|
69
|
-
- **Source Maps**: They exist, but debugging through transpilation layers is always worse than native
|
|
70
|
-
- **Hot Module Replacement**: Works... sometimes... if you hold your mouth right
|
|
71
|
-
|
|
72
|
-
## 4. Modern JavaScript Didn't Just Catch Up—It Surpassed
|
|
73
|
-
|
|
74
|
-
### JavaScript Absorbed CoffeeScript's Best Ideas
|
|
75
|
-
- **Optional Chaining**: JS `?.` is everywhere now
|
|
76
|
-
- **Nullish Coalescing**: JS `??` handles null/undefined elegantly
|
|
77
|
-
- **Arrow Functions**: JS `=>` is more explicit about `this` binding
|
|
78
|
-
- **Destructuring**: JS destructuring is more powerful and flexible
|
|
79
|
-
- **Classes**: JS classes are native, optimized, and well-understood
|
|
80
|
-
- **Template Literals**: JS backticks are standard
|
|
81
|
-
|
|
82
|
-
### What's Left Is Not Enough
|
|
83
|
-
- **Significant Whitespace**: Python developers like it. JavaScript developers see it as a footgun.
|
|
84
|
-
- **Implicit Returns**: Causes more bugs than it prevents. Explicit is better than implicit.
|
|
85
|
-
- **Everything is an Expression**: Clever, but creates debugging nightmares.
|
|
86
|
-
- **Existential Operator**: JavaScript's `?.` and `??` cover 95% of use cases more clearly.
|
|
87
|
-
|
|
88
|
-
## 5. The Performance and Security Argument
|
|
89
|
-
|
|
90
|
-
### Runtime Overhead
|
|
91
|
-
- **Extra Transpilation**: Every file goes through an additional compilation step
|
|
92
|
-
- **Larger Bundles**: CoffeeScript's runtime helpers add weight
|
|
93
|
-
- **Slower Development**: Live reload, HMR, all slower due to the compilation step
|
|
94
|
-
- **Memory overhead**: Build tools keep both CS and JS versions in memory
|
|
95
|
-
|
|
96
|
-
### Security Concerns
|
|
97
|
-
- **Supply Chain Risk**: CoffeeScript itself is a dependency with minimal maintenance
|
|
98
|
-
- **Outdated Dependencies**: The CS ecosystem doesn't get security updates quickly
|
|
99
|
-
- **Audit Complexity**: Security tools are built for JS/TS, not CoffeeScript
|
|
100
|
-
|
|
101
|
-
## 6. The Business Case Against CoffeeScript
|
|
102
|
-
|
|
103
|
-
### Technical Debt Multiplication
|
|
104
|
-
- **Training Costs**: Every new hire needs CoffeeScript training
|
|
105
|
-
- **Maintenance Burden**: You maintain both the code AND the build pipeline
|
|
106
|
-
- **Migration Inevitable**: Every CS codebase eventually migrates to JS/TS
|
|
107
|
-
- **Opportunity Cost**: Time spent on CS tooling is time not spent on features
|
|
108
|
-
|
|
109
|
-
### Project Risk Factors
|
|
110
|
-
- **Bus Factor of One**: Often only one person really knows the CS codebase
|
|
111
|
-
- **Vendor Lock-in**: Stuck with outdated tools that support CoffeeScript
|
|
112
|
-
- **Recruitment Nightmare**: Developers actively avoid CoffeeScript positions
|
|
113
|
-
- **Technical Isolation**: Can't easily adopt new tools, libraries, or practices
|
|
114
|
-
|
|
115
|
-
## 7. The False Economy of Syntax Sugar
|
|
116
|
-
|
|
117
|
-
### The "Conciseness" Trap
|
|
118
|
-
CoffeeScript is more concise, but:
|
|
119
|
-
- **Readability > Brevity**: Explicit code is easier to maintain
|
|
120
|
-
- **Debugging Nightmare**: Less syntax means more implicit behavior to debug
|
|
121
|
-
- **Onboarding Barrier**: New developers need to learn a whole new syntax
|
|
122
|
-
- **Copy-Paste Broken**: Can't use code examples from Stack Overflow, documentation, or AI assistants
|
|
123
|
-
|
|
124
|
-
### The Real Cost of "Beautiful" Code
|
|
125
|
-
- **Cognitive Load**: Developers must mentally transpile CS to JS to understand behavior
|
|
126
|
-
- **Error Messages**: Stack traces reference generated JS, not source CS
|
|
127
|
-
- **Code Review**: Reviewers need CS expertise, limiting your reviewer pool
|
|
128
|
-
|
|
129
|
-
## 8. The Innovation Dead End
|
|
130
|
-
|
|
131
|
-
### Language Evolution Frozen
|
|
132
|
-
- **No New Features**: When was the last significant CoffeeScript language feature?
|
|
133
|
-
- **No Standards Process**: JavaScript has TC39. CoffeeScript has... GitHub issues?
|
|
134
|
-
- **No Corporate Backing**: Microsoft backs TypeScript. Who backs CoffeeScript?
|
|
135
|
-
|
|
136
|
-
### Missing Modern Features
|
|
137
|
-
- **No Decorators**: The rest of the ecosystem is adopting them
|
|
138
|
-
- **No Private Fields**: Modern JS has `#private`, CS has... conventions?
|
|
139
|
-
- **No Pattern Matching**: TC39 is working on it for JS, CS will never get it
|
|
140
|
-
- **No Type Parameters**: Generic programming is impossible
|
|
141
|
-
|
|
142
|
-
## 9. The Maintainer Burden
|
|
143
|
-
|
|
144
|
-
### The Human Cost
|
|
145
|
-
- **Burnout**: The few CS maintainers are overwhelmed
|
|
146
|
-
- **No Succession Plan**: When current maintainers leave, who takes over?
|
|
147
|
-
- **Feature Requests**: The backlog grows while maintainer energy shrinks
|
|
148
|
-
- **Breaking Changes**: Fear of breaking existing code prevents evolution
|
|
149
|
-
|
|
150
|
-
### The Quality Spiral
|
|
151
|
-
- **Bug Accumulation**: Bugs pile up faster than they're fixed
|
|
152
|
-
- **Documentation Rot**: Outdated docs are worse than no docs
|
|
153
|
-
- **Example Decay**: Sample code uses patterns from 2015
|
|
154
|
-
|
|
155
|
-
## 10. The Strategic Dead End
|
|
156
|
-
|
|
157
|
-
### No Path Forward
|
|
158
|
-
- **No Migration Strategy**: You can't gradually move from CS to modern alternatives
|
|
159
|
-
- **No Ecosystem Integration**: New tools don't consider CoffeeScript at all
|
|
160
|
-
- **No Corporate Use Cases**: No major company is choosing CoffeeScript for new projects
|
|
161
|
-
- **No Educational Value**: Bootcamps and universities don't teach it
|
|
162
|
-
|
|
163
|
-
### The Opportunity Cost
|
|
164
|
-
Every hour spent on CoffeeScript 3 could be spent on:
|
|
165
|
-
- **Learning Rust/Go/Zig**: Languages with actual momentum
|
|
166
|
-
- **Contributing to TypeScript**: Where improvements benefit millions
|
|
167
|
-
- **Building Tools**: That solve real problems for modern developers
|
|
168
|
-
- **Creating Libraries**: That the ecosystem actually needs
|
|
169
|
-
|
|
170
|
-
## The Verdict: Let It Rest
|
|
171
|
-
|
|
172
|
-
CoffeeScript served its purpose. It showed JavaScript could be better and influenced ES6+. That's a tremendous legacy. But continuing to develop CoffeeScript in 2026 is like maintaining a telegraph network in the age of 5G.
|
|
173
|
-
|
|
174
|
-
The language works—CoffeeScript 2 outputs modern JavaScript that runs everywhere. But "works" isn't enough when the entire ecosystem has moved on. Development is a team sport, and CoffeeScript has no team left.
|
|
175
|
-
|
|
176
|
-
### The Harsh Truth
|
|
177
|
-
|
|
178
|
-
CoffeeScript 3 would be a technical achievement that nobody asked for, solving problems nobody has, for a community that no longer exists. The language's elegant syntax cannot overcome the brutal reality of ecosystem abandonment.
|
|
179
|
-
|
|
180
|
-
The kindest thing for CoffeeScript is to recognize it as a successful historical artifact that accomplished its mission: pushing JavaScript to become better. That mission is complete. CoffeeScript won by losing—its ideas live on in modern JavaScript while the language itself can finally rest.
|
|
181
|
-
|
|
182
|
-
**Building CoffeeScript 3 isn't just unnecessary—it's actively harmful to the developers who would be trapped maintaining codebases in a dead language, cut off from the vibrant, innovative JavaScript ecosystem of 2026 and beyond.**
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
*The real question isn't "Why not CoffeeScript 3?" but "Why would anyone choose suffering when better alternatives exist?"*
|