Skip to content

Commit

Permalink
Release blog post
Browse files Browse the repository at this point in the history
  • Loading branch information
robotlolita committed Jan 1, 2018
1 parent 54b8596 commit 91997f7
Show file tree
Hide file tree
Showing 12 changed files with 259 additions and 6 deletions.
15 changes: 15 additions & 0 deletions build.frp
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion docs/Makefile
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
8 changes: 7 additions & 1 deletion docs/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: Folktale
highlighter: 'rouge'
markdown: kramdown

paginate: 5
paginate_path: "/blog/:num/"

excerpt_separator: <!--more-->

version:
package: https://github.com/origamitower/folktale/releases/download/release%2F2.0.0-beta1/folktale-2.0.0-beta1.zip

Expand Down Expand Up @@ -56,4 +61,5 @@ defaults:
type: docs
values:
breadcrumb:
- v2.0.0
- v2.0.0

3 changes: 3 additions & 0 deletions docs/_data/navigation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
- text: Support
url: /docs/support/
group: support
- text: Blog
url: /blog/
group: blog
- text: Projects
url: /code/
group: code
2 changes: 1 addition & 1 deletion docs/_docs/v2.1.0/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
1 change: 1 addition & 0 deletions docs/_layouts/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ <h3 class="title">Folktale</h3>
<h3 class="title">Community</h3>
<ul>
<li><a href="{% link coc.html %}">Code of conduct</a></li>
<li><a href="{% link blog/index.html %}">Blog</a></li>
<li><a href="https://gitter.im/folktale/discussion">Gitter chat</a></li>
<li><a href="https://twitter.com/OrigamiTower">Twitter</a></li>
</ul>
Expand Down
12 changes: 12 additions & 0 deletions docs/_layouts/blog.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
layout: page
---

<article class="content" id="blogpost-contents">
<h2 class="title">{{ page.title }}</h2>
<div class="meta published-date">{{ page.date | date_to_long_string }}</div>

<div class="content-area">
{{ content | markdownify }}
</div>
</article>
100 changes: 100 additions & 0 deletions docs/_posts/2017-12-30-folktale-21-and-typescript.md
Original file line number Diff line number Diff line change
@@ -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.

<!--more-->


## 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 `[email protected]`, 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 :>
33 changes: 33 additions & 0 deletions docs/blog/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
layout: content-page
group: blog
title: Blog
---

<ul id="post-listing">
{% for post in paginator.posts %}
<li class="post-item">
<h2 class="post-title">
<a href="{{ post.url }}">{{ post.title }}</a>
</h2>
<div class="published-date">{{ post.date | date_to_long_string }}</div>

{{ post.excerpt }}

<p><a href="{{ post.url }}">(Read more)</a></p>
</li>
{% endfor %}
</ul>

<div class="page-navigation">
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path }}" class="page-navigation-prev">
Newer posts
</a>
{% endif %}
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path }}" class="page-navigation-next">
Older posts
</a>
{% endif %}
</div>
41 changes: 39 additions & 2 deletions docs/css/screen.css
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
46 changes: 46 additions & 0 deletions docs/stylus/common.styl
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 91997f7

Please sign in to comment.