add history note for the next published version

Former-commit-id: 07968f30448447994ea28c60d9f07916fdf74a4c
This commit is contained in:
kataras 2017-06-03 22:18:43 +03:00
parent da224e363a
commit 03bcadadec
3 changed files with 16 additions and 238 deletions

7
.gitignore vendored
View File

@ -1,8 +1,5 @@
.settings
.project
.vscode
2M_donation_timeline.cpd
performance_tips.txt
notes.txt
organisations_using_iris.txt
independent_developers_using_iris.txt
specs
.github

View File

@ -6,88 +6,25 @@
http://support.iris-go.com
_Update: 18 May 2017_
## Sa, 03 June 2017
Hello Community, @kataras sent me a report of some of the improvements he was coding for the last two months.
Here is a small preview of that report:
Website
Thanks to [Santosh Anand](https://github.com/santoshanand) the http://iris-go.com has been upgraded and it's awesome!
New version 7 released.
[Santosh](https://github.com/santoshanand) is a freelancer, he has a good knowledge of nodejs and express js, Android, iOS, React Native, Vue.js etc, if you need a developer to find or create a solution for your problem or task, please contact with him.
Navigate to the [master](https://github.com/kataras/iris/tree/master) branch for more.
As Gerasimos explained to me, he will provide you more information about [Santosh Anand](https://github.com/santoshanand)'s profile later on.
This version, v6, will work "forever" by-design, it uses the vendor directory feature, so you get truly reproducible builds, as this method guards against upstream renames and delete.
People
- Some specifications will be published to help people with interest to understand how Iris works under the hood
- Every level of the framework's API has been simplified, code is a lot easier to read
- Guidelines for people who wants to contribute to the Iris project will be, finally, published. PRs can be approved after 2 or more code reviews
Developers are not forced to upgrade to the version 7 if they don't really need it.
General
- Desktop notifications for common errors, online solution is visible when user click on the "Balloon" (Can be turned off)
- Tray icon with useful links, including "docs and examples", "get free support", "chat with us" (Can be turned off)
- Several enhancements for typescript transpiler, view engine, websocket server and sessions manager
## v5 -> v6
Routing
- New custom interpreter including parser and evaluator for routes' path, i.e `/users/{userid:int min(1)}`, `/users/{username:string regexp(...)`, `/assets/{file:path}` with custom "macros" and more (Optional, the old syntax is totally valid and safe)
- Remove of gorillamux, it's useless. The new way is faster than anything else we have seen in Go so far.
- Subdomains matching improvements
- Simplify API, i.e Handlers are now standalone functions, no need for `HandleFunc,UseFunc,DoneFunc,UseGlobalFunc`, only `Handle,Use,Done,UseGlobal`
- General speed improvements
- Cache with expiration, rules can be setted per route or globally
Users already notified for some breaking-changes, this section will help you
to adapt the new changes to your application, it contains an overview of the new features too.
Server
- Performance boost up to 8-12% on 5kkk+ connections
- Schedule custom tasks(with cancelation) when server is running
- Future Go1.9's [ServeTLS](https://go-review.googlesource.com/c/38114/2/src/net/http/server.go) has already adopted here
- New `Done` and `Err` channels to catch shutdown or any errors
- Able to set custom underline *http.Server(s) under the Iris' Server Supervisor
- Proxy removed, net/http has its own and it's good
- New tcp listening methods are easier to use, simplier to read
Context
- Easy way to change Iris' default `Context` with a custom one
- Custom HTTP errors are fired when request is done , automatically
- `ResponseWriter().SetBeforeFlush(...)` works for Flush and HTTP/2 Push, respectfully
- `JSON, JSONP, XML, Markdown, HTML` faster
- Able to set `ViewData` and `ViewLayout` via middleware when executing a template
- Several improvements under the `Request transactions`
- And 16+ more additions, new features and API simplifications, will be documented when @kataras decide to publish the new release at github.
## 6.1.4 -> 6.2.0 (√Νεxτ)
_Update: 12 April 2017_
```
Many of you, including myself, thought that Gerasimos is not accepting any PRs, this is wrong.
I did a long PR, which actually fixes some bugs and integrations with the godep tool, on a project that he's contributing too.
The next day I'm logged into my personal twitter and I saw a message written by him.
He, @kataras, wrote me that he was really impressed by the time I spent to actually fix a bug on an Iris sub-project.
He told me that no one did that before and he asked me if I have more time to help these days on the Iris project too.
And, Here I am! Introducing myself to the most clever community!
```
```
Hello,
my name is Esemplastic.
Iris' author, @kataras, is very busy these days on designing the new Iris' release which will contain even more prototypes and it will break any rules you knew so far.
I took a sneak preview of it, don't tell to him!
I'm the temporary maintainer of this open-source project and your new friend.
```
- **FIX**: Upgrade the [httpcache](https://github.com/geekypanda/httpcache) vendor. As requested [here](http://support.iris-go.com/d/44-upgrade-httpcache-module).
_Update: 28 March 2017_
- **View**: Provide an easier method on the community's question about "injecting" additional data outside of the route's main handler which calls the .Render, via middleware.
- As discussed [above](http://support.iris-go.com/d/27-using-middleware-to-inject-properties-for-templates).
- Click [here](https://github.com/kataras/iris/tree/v6/_examples/intermediate/view/context-view-data) for an example.
@ -103,18 +40,6 @@ _Update: 12 March 2017_
- Add a third parameter on `app.OnError(...)` for custom http errors with regexp validation, see [status_test.go](https://github.com/kataras/iris/blob/v6/status_test.go) for an example.
- Add a `context.ParamIntWildcard(...)` to skip the first slash, useful for wildcarded paths' parameters.
> Prepare for nice things, tomorrow is Iris' first birthday!
_Update: 28 Feb 2017_
> Note: I want you to know that I spent more than 200 hours (16 days of ~10-15 hours per-day, do the math) for this release, two days to write these changes, please read the sections before think that you have an issue and post a new question, thanks!
Users already notified for some breaking-changes, this section will help you
to adapt the new changes to your application, it contains an overview of the new features too.
- Shutdown with `app.Shutdown(context.Context) error`, no need for any third-parties, with `EventPolicy.Interrupted` and Go's 1.8 Gracefully Shutdown feature you're ready to go!
- HTTP/2 Go 1.8 `context.Push(target string, opts *http.PushOptions) error` is supported, example can be found [here](https://github.com/kataras/iris/blob/v6/adaptors/websocket/_examples/websocket_secure/main.go)

156
README.md
View File

@ -1,44 +1,15 @@
<p align="center">
<a href="http://support.iris-go.com">
<img width="500" src="https://github.com/iris-contrib/website/raw/gh-pages/assets/simplicity_random_image_but_suitable_because_iris_has_the_same_slogan.gif"
alt="Navigate to http://support.iris-go.com">
</a>
# Iris
<p>
Iris is an <b>efficient</b> and well-designed, <b>cross-platform, web framework</b> with robust set of <b>features</b>.<br/>Build your own <b>high-performance</b> web applications and <b>APIs</b> powered by unlimited <b>potentials and portability</b>.<br/>
<a href="https://travis-ci.org/kataras/iris"><img src="https://api.travis-ci.org/kataras/iris.svg?branch=v6&style=flat-square" alt="Build Status"></a>
<a href="http://goreportcard.com/report/kataras/iris"><img src="https://img.shields.io/badge/report%20card%20-a%2B-F44336.svg?style=flat-square" alt="http://goreportcard.com/report/kataras/iris"></a>
<a href="http://support.iris-go.com"><img src="https://img.shields.io/badge/support-page-ec2eb4.svg?style=flat-square" alt="Iris support forum"></a> <!-- <a href="https://github.com/kataras/iris/blob/v6/HISTORY.md"><img src="https://img.shields.io/badge/codename-Νεxτ%20-blue.svg?style=flat-square" alt="CHANGELOG/HISTORY"></a> --><a href="https://github.com/kataras/iris/tree/v6/_examples#table-of-contents"><img src="https://img.shields.io/badge/examples-%20repository-3362c2.svg?style=flat-square" alt="Examples for new Gophers"></a>
<a href="https://godoc.org/gopkg.in/kataras/iris.v6"><img src="https://img.shields.io/badge/docs-%20reference-5272B4.svg?style=flat-square" alt="Docs"></a>
<a href="https://kataras.rocket.chat/channel/iris"><img src="https://img.shields.io/badge/community-%20chat-00BCD4.svg?style=flat-square" alt="Chat"></a>
<a href="https://github.com/kataras/iris#buy-me-a-cup-of-coffee"><img src="https://img.shields.io/badge/support-%20open--source-F4A460.svg?logo=data:image%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAwIDEwMDAiPjxwYXRoIGZpbGw9InJnYigyMjAsMjIwLDIyMCkiIGQ9Ik04ODYuNiwzMDUuM2MtNDUuNywyMDMuMS0xODcsMzEwLjMtNDA5LjYsMzEwLjNoLTc0LjFsLTUxLjUsMzI2LjloLTYybC0zLjIsMjEuMWMtMi4xLDE0LDguNiwyNi40LDIyLjYsMjYuNGgxNTguNWMxOC44LDAsMzQuNy0xMy42LDM3LjctMzIuMmwxLjUtOGwyOS45LTE4OS4zbDEuOS0xMC4zYzIuOS0xOC42LDE4LjktMzIuMiwzNy43LTMyLjJoMjMuNWMxNTMuNSwwLDI3My43LTYyLjQsMzA4LjktMjQyLjdDOTIxLjYsNDA2LjgsOTE2LjcsMzQ4LjYsODg2LjYsMzA1LjN6Ii8%2BPHBhdGggZmlsbD0icmdiKDIyMCwyMjAsMjIwKSIgZD0iTTc5MS45LDgzLjlDNzQ2LjUsMzIuMiw2NjQuNCwxMCw1NTkuNSwxMEgyNTVjLTIxLjQsMC0zOS44LDE1LjUtNDMuMSwzNi44TDg1LDg1MWMtMi41LDE1LjksOS44LDMwLjIsMjUuOCwzMC4ySDI5OWw0Ny4zLTI5OS42bC0xLjUsOS40YzMuMi0yMS4zLDIxLjQtMzYuOCw0Mi45LTM2LjhINDc3YzE3NS41LDAsMzEzLTcxLjIsMzUzLjItMjc3LjVjMS4yLTYuMSwyLjMtMTIuMSwzLjEtMTcuOEM4NDUuMSwxODIuOCw4MzMuMiwxMzAuOCw3OTEuOSw4My45TDc5MS45LDgzLjl6Ii8%2BPC9zdmc%2B" alt="Buy me a cup of coffee"></a>
<br/>
Iris is an <b>efficient</b> and well-designed, <b>cross-platform, web framework</b> with robust set of <b>features</b>.<br/>Build your own <b>high-performance</b> web applications and <b>APIs</b> powered by unlimited <b>potentials and portability</b>.
If you're coming from <a href="https://nodejs.org/en/">Node.js</a> world, this is the <a href="https://github.com/expressjs/express">expressjs</a> equivalent for the <a href="https://golang.org">Go Programming Language.</a>
</p>
<details>
<summary>News</summary>
Upcoming release - Calliope
-----------
Hello people, I'm designing the new Iris version with the codename of "**Calliope**".
Based on the **Greek goddesses** of ancient mythology, **Calliope** was one of the Muses, the muse of epic poetry, daughter of Zeus and Mnemosyne and the wisest of the Muses.
The next, tactical, month release *should be published at the **1 May of 2017** *.
I am making my bests to catch up this deadline, so I'm very busy these days. Sorry for being late to answer to your questions!
**UPDATE: 6 May 2017**
The release could be published at the first may of 2017 but it was postponed.
The below tasks should be completed before publishing the new release:
- The review, of the new release's specifications that I wrote, should be ready at the next couple of days.
- The results from our beta testers may take a little more but it worths the waiting.
</details>
What you say about Iris ✌
-----------
<p>
@ -71,6 +42,9 @@ src="https://github.com/iris-contrib/website/raw/gh-pages/assets/gif_link_to_yt.
<a href="https://www.youtube.com/watch?v=jGx0LkuUs4A">
<img width ="300" src="https://github.com/iris-contrib/website/raw/gh-pages/assets/gif_link_to_yt2.gif" alt="What people say" />
</a>
<br/>
If you're coming from <a href="https://nodejs.org/en/">Node.js</a> world, this is the <a href="https://github.com/expressjs/express">expressjs</a> equivalent for the <a href="https://golang.org">Go Programming Language.</a><br/>
</p>
@ -227,9 +201,6 @@ The only requirement is the [Go Programming Language](https://golang.org/dl/), a
$ go get gopkg.in/kataras/iris.v6
```
For further installation support, navigate [here](http://support.iris-go.com/d/16-how-to-install-iris-web-framework).
Overview
-----------
@ -385,17 +356,6 @@ Support
- :earth_americas: post [an article](https://dzone.com/articles/a-url-shortener-service-using-go-iris-and-bolt-ger) or [tweet](https://twitter.com/gelnior/status/769100480706379776) and share it with your neighbor
<!--It's true that I am spending all my available time for Iris and its related projects, therefore I have no income value.
However, I am not asking from people to change the system. I know that the majority of us(devs) don't really care how authors of projects like Iris survive. I totally understand that.
If somebody out there can
help developers like me to worry less about daily life's dilemmas it would be easier for them to make the particular project(s) even better.
There are no limits to the Iris' potentials.
I am a realistic person. If things won't change for my daily life I will be forced to give Iris' managment to somebody else(that community could trust).-->
Buy me a cup of coffee?
------------
@ -413,29 +373,6 @@ Feel free to send **any** amount through paypal
Thanks for your gratitude and finance help ♡
<!--
Some of the benefits are listed here:
- Your github username, after your approval, is visible at the top of the README page.
- Access to the 'donors' [private chat room](https://kataras.rocket.chat/group/donors) gives you real-time assistance by Iris' Author.
-->
<!--
### Become An Iris Sponsor
Want to add your company's logo to our [website](http://iris-go.com)?
Please contact me via email: kataras2006@hotmail.com
Thank you!
-->
Third Party Middleware
------------
@ -466,87 +403,6 @@ Here is a small list of Iris compatible middleware, I'm sure you can find more:
Feel free to put up a [PR](https://github.com/iris-contrib/middleware) your middleware!
<!--
FAQ
-----------
<p>
</p>
> Q: OK Iris is really fast, but my current website does not need that performance at the moment, are there other reasons to move into Iris?
Iris is fully vendored. That means it is independent of any API changes in the used libraries and **will work seamlessly in the future**!
The size of the executable file is a critical part of the Application Deployment Process.
Two very simple identical applications, the first was written with `iris` and the second with a simple golang router.
- _iris_ had `8.505 KB` overall file size
- _gin_ had `9.029 KB` overall file size
- _net/http_ had produced an executable file with `5.380 KB` size.
> Iris has built'n support for the most of the features that you will use to craft your perfect web application, while the golang router(gin & httprouter alone) doesn't. Imagine what would happened if the simple app we created would use `sessions`, `websockets`, `view engine`... I tested that too, `gin` and `net/http` had produced the x3 of their original size, **while `iris application`' overall executable filesize remained stable**!
**Applications that are written using Iris produce smaller file size even if they use more features** than a simple router library!
Iris always follows the latest trends and best practices. Iris is the **Secret To Staying One Step Ahead of Your Competition**.
Iris is **a high-performance** tool, but it doesn't stops there. Performance depends on your application too, **Iris helps you to make the right choices** on every step.
**Familiar** and easy **API**. Sinatra-like REST API.
Contains examples and documentation for all its features.
Iris is a `low-level access` web framework, you always know what you're doing.
You'll **never miss a thing** from `net/http`, but if you do on some point, no problem because Iris is fully compatible with stdlib, you still have access to `http.ResponseWriter` and `http.Request`, you can adapt any third-party middleware of form `func(http.ResponseWriter, *http.Request, next http.HandlerFunc)` as well.
Iris is a community-driven project, **you suggest and I code**.
Unlike other repositories, this one is **very active**. When you post an issue, you get an answer at the next couple of minutes(hours at the worst). If you find a bug, **I am obliged to fix** that on the same day.
Click the below animation to see by your self what people, like you, say about Iris.
<a href="https://www.youtube.com/watch?v=jGx0LkuUs4A">
<img src="https://github.com/iris-contrib/website/raw/gh-pages/assets/gif_link_to_yt2.gif" alt="What people say" />
</a>
> Q: Why no `serverless`?
New web developers are so enthusiastic about the idea of `serverless` and `AWS`. Most of the experienced developers we already know that we shouldn't use these things for our critical parts of our application.
**`Serverless and AWS` Are Wonderful—Until They Go Wrong.** There was a flash-point (at 28 February of 2017) where the 'internet was offline' and most of the sites, including isitdownrightnow.com, were down or operated very slow! Why? Because of `serverless` and `AmazonS3`.
Please think twice before moving your code into `serverless`, **instead, use web frameworks that are created for servers that you control**, i.e Iris.
Proof of concept:
- [Washington Post](https://www.washingtonpost.com/news/the-switch/wp/2017/02/28/why-a-whole-slew-of-websites-are-suddenly-down-or-working-slowly)
- [CNN](http://money.cnn.com/2017/02/28/technology/amazon-web-services-outages/index.html)
- [CNET](https://www.cnet.com/news/no-the-internet-is-not-broken-amazon-web-services-is-just-having-issues/?ftag=COS-05-10-aa0a&linkId=34980800)
- [MIT Technology Review](https://www.technologyreview.com/s/603738/centralized-web-services-are-wonderful-until-they-go-wrong/?_ga=1.82562070.1263144274.1488319022)
- [GolangNews](https://golangnews.com/stories/1835-serverless-is-wonderfuluntil-they-go-wrong.)
Explore [these questions](http://support.iris-go.com/) and join to our [community chat][Chat]!
-->
Testing
------------