HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
jashkenas
coffeescript
CoffeeScript2009–2025
jashkenas / coffeescript

coffeescript

Unfancy JavaScript

181Distinct people
274Mentions
3Explicit recommenders
16.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Unfancy JavaScript

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Deno + Coffeescript? I mean it runs Typescript natively, so why not my favorite flavor of javascript, too? https://github.com/jashkenas/coffeescript/issues/5150

danschumann used a recommendation phrase. 3 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 7:02:50 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year274 dated mentions

Observed mentions: 2009-12-24 21:07:22 UTC to 2025-11-10 07:58:51 UTC.

02040602009-01-01 00:00:00 UTC to 2010-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20092010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 13 mentions; 4 submissions, 9 comments2011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 67 mentions; 7 submissions, 60 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 45 mentions; 7 submissions, 38 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 45 mentions; 11 submissions, 34 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 28 mentions; 1 submissions, 27 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 21 mentions; 3 submissions, 18 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 15 mentions; 3 submissions, 12 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 12 mentions; 0 submissions, 12 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 6 mentions; 2 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20092009-01-01 00:00:00 UTC2010-01-01 00:00:00 UTC101
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC1349
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC67760
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC45738
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC451134
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC28127
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC21318
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC15312
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC12012
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC624
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC615
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC606
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC505
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC110
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
@@@@@@@ @@@@ @@@@@ @@@@@@@@@@ @@@ @@@ { @@@@ @@ @@@ @@@ } } { @@@@ @@@@@@@ @@@ @@@ @@@@@@ @@@@@@ { { } } @@@@ @@@ @@ @@@@@ @@@@@@ @@@ @@ @@@@ @@ } }{ { @@@@ @@@@ @@ @@@ @@@ @@@ @@@ @@@ @@@ { }{ } } @@@@ @@@@ @@ @@@ @@@ @@@@@@@@ @@@@@@@@ { }{ }{ { } @@@@@ @@@@ @@ @@@ @@@ @@@ @@@ { { } { } { } } @@@@@@@@@@ @@@@@@@@ @@@ @@@ @@@@@@@@ @@@@@@@@ { } { } { } @@@@@ @@@ @@@ @@@@@ @@@@@ @@@@@@ { } { } @@@@@@@ @@@ @@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@ @@@ @@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@ @@@ @@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@ @@ @@@@ @@@ @@@@@@@@@@@@@@@@@@@@@ @@@@@ @@@@@ @@ @@ @@@ @@@@@@@ @@@@@ @@@ @@@@@@@@@@@@@@@@@@ @@@@@ @@@ @@@ @@@@@@@@ @@@@ @@@@ @@@@@@@ @@@ @@@@@@@@@@@@@@@@ @@@@@ @@@ @@@@ @@@@ @@@ @@@ @@@ @@@@@@@@@@@@@@ @@@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@ @@@@ @@@ @@@@ @@@@ @@@ @@@@ @@@@ @@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@@@@@@ @@@@@@ @@@@ @@@@ @@@@@@@@@ @@@@ @@@ @@@@ @@@ @@@ CoffeeScript is a little language that compiles into JavaScript. Installation Once you have Node.js installed: # Install locally for a project: npm install --save-dev coffeescript # Install globally to execute .coffee files anywhere: npm install --global coffeescript Getting Started Execute a script: coffee /path/to/script.coffee Compile a script: coffee -c /path/to/script.coffee For documentation, usage, and examples, see: https://coffeescript.org/ To suggest a feature or report a bug: https://github.com/jashkenas/coffeescript/issues If you’d like to chat, drop by #coffeescript on Freenode IRC. The source repository: https://github.com/jashkenas/coffeescript.git Changelog: https://coffeescript.org/#changelog Our lovely and talented contributors are listed here: https://github.com/jashkenas/coffeescript/contributors
Read the full README on GitHub

What Hacker News says

28 sources
> You can make any language available in a script block and have it interpreted using a polyfill. If JS sucked as bad as some people think, this would have taken off - it hasn't. That's not trivial. People are cross compiling to javascript as part of a build process though, so you're wrong that it hasn't taken off. Coffescript, Typescript, ClojureScript, Elm, etc. https://github.com/jashkenas/coffeescript/wiki/list-of-langu...
In The Two Pillars of JavaScript: Part 1: How to Escape the 7th Circle of Hell
It needs to be different than ClojureScript as well as more than a dozen other lisp-to-js projects. [1] These are fun projects, and I don't doubt that the authors and a few individuals have or will get great use of of it, but the market is saturated with languages that compile JS right now and very few stick out or are likely to get critical mass. Even Coffeescript, which is probably the most popular one, has a small community. [1] https://github.com/jashkenas/coffeescript/wiki/list-of-langu...
In Jisp – A programmable language that compiles to JavaScript
The more flexibility a language gives you in the order you place your code, the better it is for literate programming. If you haven't seen it yet, check out the source code to coffeescript. Here is the source file: https://github.com/jashkenas/coffeescript/blob/master/src/gr... Here is a nicely rendered version of the same file: http://coffeescript.org/documentation/docs/grammar.html Also see literate coffeescript, a mode that seamlessly integrates markdown. I'd give up vim for a environment that lets me embed images, embed SVG diagrams, use those SVG diagrams at compile time to generate code, etc.
In Termtris: A Game Like Tetris in Ten Functions
I recently migrated a fairly large CoffeeScript project to JS, after using CS for more than three years. ES6 and ES7 addresses many of the pain points of JS right now. So my sugggestion would be to use an ES6/ES7 transpiler instead of CoffeeScript. - JS produced by the CS compiler isn't that great, to be honest. - Plain JS is easier to debug than CS, even though you have source maps. - Source map chains don't always work. So using CoffeeScript together with another tool which produces its own source maps could be a problem. - Build time could go down without CS - Way more devs understand JS than CS - I might have considered sticking with CoffeeScript if it had plans to evolve, perhaps add more functional features. But jashkenas considers CoffeeScript mostly done. As michaelficarra mentions in https://github.com/jashkenas/coffeescript/issu
Read the rest
es/3073, "CoffeeScript needs to evolve or die" - When ES6 gets implemented, just get rid of the ES6/ES7 transpiler and you have plain JS I haven't read the article, but if you ask me CoffeeScript is dying.
In Farewell CoffeeScript
And here's how to do the same in plain CoffeeScript with generators — using a new patch landed a couple of minutes ago: https://github.com/jashkenas/coffeescript/pull/3240/files -> try body = yield request "https://x.io/" yield request "https://x.io/?q=#{body.hash}" catch e # do what you like with the error ... the salient bit being that there's no need to declare a generator function as a "special" type of function different from any other — a generator is simply a function that yields.
In Handling Errors in IcedCoffeeScript
No, unfortunately we have not. With triple quotes you get a string with newlines and indentation in it. While you can not indent the following lines it looks ugly, and you can't do anything about newlines. Take a look at how F# handles the issue: http://stackoverflow.com/a/14599828 And CoffeeScript: http://coffeescript.org/#strings (apparently implemented relatively recently (https://github.com/jashkenas/coffeescript/issues/3229) and borrowed from LiveScript. There are other language which support multiline strings (Here docs) with indents stripped via means of syntax, like YAML (with |), Racket (which doesn't do dedenting, but being language it is it's very easy to add) and many shells (with <<-). Python doesn't have this feature, and parse-time string literals concatenation serves this purpose. Of course, you can do something like:
Read the rest
foo = """bar indented at first and after newline """ textwrap.dedent(foo) (or use list literals with str.join, or use a regex, or many, many other thing), but you can do this in all languages. Languages with syntactic sugar for this make writing slightly-longer-but-not-too-long strings much easier and cheaper (only done once during parsing, no need for imports, etc.), and Python makes up for not having explicit way of doing this with implicit parse-time string literals concatenation.
In Common Python Mistakes
I described some details that would help implement a rich code editor (like CodeMirror) in Try CoffeeScript in this issue: “Use rich code editor in Try CoffeeScript on coffeescript.org” – https://github.com/jashkenas/coffee-script/issues/3076 I’m glad to hear that compile errors will finally be displayed in the output area in the next release (https://github.com/jashkenas/coffee-script/pull/3425). If anyone feels like improving that interface even further, they could try implementing the mockup in this issue: “Highlight code errors and move error message in Try CoffeeScript” – https://github.com/jashkenas/coffee-script/issues/3077
In Announcing TypeScript 1.0
I agree that using functional style was not fair (comment edited :)). By the way, here's a non contrived CS example directly from CS's source which I find really hard to understand: https://github.com/jashkenas/coffee-script/blob/master/src/g... tokens = [] for name, alternatives of grammar grammar[name] = for alt in alternatives for token in alt[0].split ' ' tokens.push token unless grammar[token] alt[1] = "return #{alt[1]}" if name is 'Root' alt Why is a loop assigned to a variable? I understand that loops are expressions but the intent here is not immediately clear and definitely requires some thinking. That's what I mean by readability (terseness is another thing).
In Why CoffeeScript Isn't the Answer
This is not the first article talking about CoffeeScript's ambiguity and readability issues. It's interesting how CoffeeScript fans almost always decide to blame the programmers for these problems. They said good developers should use common sense and use best practices to make code readable, for example by always using parentheses when calling functions. I hear exactly the same argument in the Perl community. But reality is that if a language allows you to write bad code easily, people will write bad code, and you will have to read bad code. This is very easy to verify: most CS project on GitHub, starting with the CS code itself (http://github.com/jashkenas/coffee-script) contain a lot of bad ambuigous uses of the language. A very similar thing happens with Perl code. Programming language design is not only about making it easy to write
Read the rest
good code, but also about making it hard to write bad one.
In Why CoffeeScript Isn't the Answer

Showing the 15 most recent of 28 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.