From 91997f759c19b0d9657a011eedbde338a03bede3 Mon Sep 17 00:00:00 2001 From: Quildreen Motta Date: Mon, 1 Jan 2018 13:46:46 -0200 Subject: [PATCH] Release blog post --- build.frp | 15 +++ docs/Makefile | 2 +- docs/_config.yml | 8 +- docs/_data/navigation.yml | 3 + docs/_docs/v2.1.0/release-notes.md | 2 +- docs/_layouts/base.html | 1 + docs/_layouts/blog.html | 12 +++ .../2017-12-30-folktale-21-and-typescript.md | 100 ++++++++++++++++++ docs/blog/index.html | 33 ++++++ docs/css/screen.css | 41 ++++++- docs/stylus/common.styl | 46 ++++++++ package-lock.json | 2 +- 12 files changed, 259 insertions(+), 6 deletions(-) create mode 100644 docs/_layouts/blog.html create mode 100644 docs/_posts/2017-12-30-folktale-21-and-typescript.md create mode 100644 docs/blog/index.html diff --git a/build.frp b/build.frp index e4b51b9..51d400a 100644 --- a/build.frp +++ b/build.frp @@ -205,3 +205,18 @@ export define documentation = export define lint = # Notifies about formatting problems and potential bugs in the source code. run-lint (root / ".eslintrc.json") + + +export define release = + # Releases `base` + let release = root / "packages" / "base" / "releases" / "new" in + let pkg = root / "packages" / "base" in + let show-copy = show-file-operation "COPY" in + do action test + action lint + action bundle-source + action make-directory release | Debug.trace @ -prefix: "MKDIR" + action copy (pkg / "build") @ -to: release -overwrite: true |> show-copy + action copy (pkg / "CHANGELOG.md") @ -to: (release / "CHANGELOG.md") -overwrite: true |> show-copy + action copy (pkg / "package.json") @ -to: (release / "package.json") -overwrite: true |> show-copy + action copy (pkg / "CONTRIBUTORS") @ -to: (release / "CONTRIBUTORS") -overwrite: true |> show-copy \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile index eff0c23..6243056 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,6 +1,6 @@ .PHONY: _css _css: - ./node_modules/.bin/stylus --watch --out css/screen.css stylus/screen.styl + ../node_modules/.bin/stylus --watch --out css/screen.css stylus/screen.styl .PHONY: _jekyll _jekyll: diff --git a/docs/_config.yml b/docs/_config.yml index 3fdf740..c0cafc5 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -2,6 +2,11 @@ name: Folktale highlighter: 'rouge' markdown: kramdown +paginate: 5 +paginate_path: "/blog/:num/" + +excerpt_separator: + version: package: https://github.com/origamitower/folktale/releases/download/release%2F2.0.0-beta1/folktale-2.0.0-beta1.zip @@ -56,4 +61,5 @@ defaults: type: docs values: breadcrumb: - - v2.0.0 \ No newline at end of file + - v2.0.0 + diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml index 43c5fc0..66f0f23 100644 --- a/docs/_data/navigation.yml +++ b/docs/_data/navigation.yml @@ -4,6 +4,9 @@ - text: Support url: /docs/support/ group: support +- text: Blog + url: /blog/ + group: blog - text: Projects url: /code/ group: code \ No newline at end of file diff --git a/docs/_docs/v2.1.0/release-notes.md b/docs/_docs/v2.1.0/release-notes.md index 9516976..35aa716 100644 --- a/docs/_docs/v2.1.0/release-notes.md +++ b/docs/_docs/v2.1.0/release-notes.md @@ -41,7 +41,7 @@ The big issue with `.toString` is that too many things in JavaScript will invoke you don't want that. So, yeah, this will hopefully be addressed soon. -## Acnowledgements +## Acknowledgements As always, a huge thank you to everyone who contributed to improving Folktale, by reporting errors, sending feedback, talking about it, sending patches, etc. diff --git a/docs/_layouts/base.html b/docs/_layouts/base.html index a5a4c61..4306754 100644 --- a/docs/_layouts/base.html +++ b/docs/_layouts/base.html @@ -37,6 +37,7 @@

Folktale

Community

diff --git a/docs/_layouts/blog.html b/docs/_layouts/blog.html new file mode 100644 index 0000000..b57b2b6 --- /dev/null +++ b/docs/_layouts/blog.html @@ -0,0 +1,12 @@ +--- +layout: page +--- + +
+

{{ page.title }}

+
{{ page.date | date_to_long_string }}
+ +
+ {{ content | markdownify }} +
+
\ No newline at end of file diff --git a/docs/_posts/2017-12-30-folktale-21-and-typescript.md b/docs/_posts/2017-12-30-folktale-21-and-typescript.md new file mode 100644 index 0000000..9d50c13 --- /dev/null +++ b/docs/_posts/2017-12-30-folktale-21-and-typescript.md @@ -0,0 +1,100 @@ +--- +layout: blog +title: "Folktale 2.1 and TypeScript Support" +group: blog +--- + +Hello everyone~ + +I had this release planned for just before New Year's but I wasn't feeling well so that didn't happen. + +Anyway. There are two releases today: Folktale 2.1, and some experimental TypeScript support in the next release, Folktale 3.x. + + + + +## A modest iteration: Folktale 2.1 + +The Foltkale 2.1 release is very modest, and mostly includes documentation and bug fixes. +You can look at the [release notes]({% link _docs/v2.1.0/release-notes.md %}) and +[full changelog]({% link _docs/v2.1.0/changelog.md %}) for details. + +In essence, this fixes some issues with inconsistent functions (adding new signatures +and functions in the process), and fixes part of the problem with the derived `.toString` +function in ADTs. This function still doesn't handle circular objects, but a fix for that +is coming soon. + +Following the new [Folktale release strategy](http://robotlolita.me/2017/07/15/folktale-2-and-beyond.html#release-strategy), this is +being released in the experimental (`@next`) channel first, so if you want to try it out +you need: + + $ npm install folktale@next + +No problems are expected to happen as the changes were modest, but there may be edge cases +with backwards compatibility of `nullableToResult` and `Result.fromNullable`. If no issues +are found during this month, 2.1 will be released in the stable channel in the beginning of +February. + + +## Experimental TypeScript support + +The last few months were spent on studying and getting TypeScript to work well with Folktale. +[Moving to a typed language has been considered for a while](https://github.com/origamitower/folktale/issues/115), and the new versions of TypeScript do +make this a bit more reasonable. The plan is to have Folktale rewritten in TypeScript, and +the documentation revised and improved for this by June of this year. + +There are some current limitations with TypeScript that continue to make giving proper +to existing (and future interesting) Folktale functionality difficult: + + - There's no support for Higher-Kinded Polymorphism. This can be somewhat alleviated with + the fact that TypeScript now supports `this` types, so the overloading and dynamic + dispatch on objects solves a lot of things where HKP would be necessary. + + While this is a good start, a submodule like `fantasy-land` can't be given a type that + preserves input information, so it would require either any types, or casts. The + [encoding approach](http://ocamllabs.io/higher/lightweight-higher-kinded-polymorphism.pdf) + to support higher-kinds, as used by [Giulio Canti](https://github.com/gcanti/fp-ts) doesn't + work with types that are not aware of this encoding, so they're not usable here either. + + - Some features, like the ADT module, are pretty much untypeable. A restricted form of it may + work with TypeScript's limited type-level operations, but we'll see... + + - TypeScript's handling of function arguments means that it's not possible to support overloading + existing functions like `waitAll` or `nodebackToTask`. Because of this the TypeScript version + of Folktale will move back into fixed-arity land. This means you'll have to use `waitAll2(a, b)` + instead of `waitAll([a, b])` and such. + +An initial, experimental release of Folktale with TypeScript support is available in the +`alpha` channel. You can install it with: + + $ npm install folktale@alpha + +This will get you `folktale@3.0.0-alpha5`, which includes type definitions for most functionality, +except the `adt` and `fantasy-land` modules. + + +## The road to 3.0 + +So, 3.x will be primarily about TypeScript support, but here's what's also planned: + + - Move all the codebase to TypeScript. This means that the type definitions won't get out of sync, + but it also means that changes will be caught by the type checker. It might be possible to + automate more updates with a migration tool (TS having a compiler-as-a-library helps), but + we'll see about that. + + - Improve the documentation. This will involve separating the conceptual documentation from the + API documentation, which should make the life of people who are new to functional programming + a lot easier, it should also make the API documentation searchable, so it works as a quick + reference. + + - Implement the missing interfaces from Fantasy-Land (including ChainRec). + + - New collection types (List, Vector, Map, Set), concurrent types (CSP channels and push-based streams), + and numeric types (BigInteger, BigDecimal, BigRational). + + +## Acknowledgements + +As always, a huge thank you to everyone who contributed to improving Folktale, by reporting errors, sending feedback, talking about it, sending patches, etc. + +This release wouldn't be possible without the contributions of [@diasbruno](https://github.com/diasbruno), [@gvillalta99](https://github.com/gvillalta99), [@MichaelQQ](https://github.com/MichaelQQ), [@stabbylambda](https://github.com/stabbylambda), [@floriansimon1](https://github.com/floriansimon1), and [@scotttrinh](https://github.com/scotttrinh). Really, thank you :> \ No newline at end of file diff --git a/docs/blog/index.html b/docs/blog/index.html new file mode 100644 index 0000000..7c16bb7 --- /dev/null +++ b/docs/blog/index.html @@ -0,0 +1,33 @@ +--- +layout: content-page +group: blog +title: Blog +--- + + + + \ No newline at end of file diff --git a/docs/css/screen.css b/docs/css/screen.css index 8c5049e..08dec49 100644 --- a/docs/css/screen.css +++ b/docs/css/screen.css @@ -34,7 +34,8 @@ body { max-width: 800px; margin: 2em auto; } -.content .title { +.content .title, +#post-listing .post-title { font-family: "Libre Baskerville", Georgia, serif; color: #34495e; font-weight: 400; @@ -43,7 +44,8 @@ body { letter-spacing: -0.02em; margin-bottom: 0.5em; } -.content .title:before { +.content .title:before, +#post-listing .post-title:before { content: ' '; width: 1.5em; height: 1px; @@ -383,6 +385,41 @@ body { .page-navigation .page-navigation-next a::before { content: "Next"; } +#post-listing { + list-style: none; + margin: 0; +} +#post-listing .post-title { + font-size: 32px; + border-bottom: none; + padding-bottom: 0; +} +#post-listing .post-title:before { + display: none; +} +#post-listing .published-date { + margin-top: -1em; + margin-bottom: 2em; +} +#post-listing .post-item { + border-bottom: 1px solid #ecf0f1; + padding-bottom: 0.5em; + margin-bottom: 1em; +} +.published-date { + font-size: 80%; + font-family: "Helvetica", "Verdana", sans-serif; + text-transform: uppercase; + color: #7f8c8d; + font-style: italic; +} +#blogpost-contents .title { + font-size: 32px; +} +#blogpost-contents .published-date { + margin-top: -0.5em; + margin-bottom: 3em; +} header { display: flex; flex-direction: column; diff --git a/docs/stylus/common.styl b/docs/stylus/common.styl index bb6b7a9..e22e3a9 100644 --- a/docs/stylus/common.styl +++ b/docs/stylus/common.styl @@ -205,4 +205,50 @@ body { .page-navigation-next a::before { content: "Next"; } +} + +#post-listing { + list-style: none; + margin: 0; + + .post-title { + @extends .content .title; + font-size: 32px; + border-bottom: none; + padding-bottom: 0; + + &:before { + display: none; + } + } + + .published-date { + margin-top: -1em; + margin-bottom: 2em; + } + + .post-item { + border-bottom: 1px solid clouds; + padding-bottom: 0.5em; + margin-bottom: 1em; + } +} + +.published-date { + font-size: 80%; + font-family: sans-font; + text-transform: uppercase; + color: abestos; + font-style: italic; +} + +#blogpost-contents { + .title { + font-size: 32px; + } + + .published-date { + margin-top: -0.5em; + margin-bottom: 3em; + } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3a6a86d..20d70b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3001,7 +3001,7 @@ "dev": true }, "furipota": { - "version": "github:origamitower/furipota#babefc35b82e527169aaaa0557f6d018933132ff", + "version": "github:origamitower/furipota#52c4d8d72a93101bc1db18979d96b9aae9dd0649", "dev": true, "requires": { "chalk": "1.1.3",