<commit_before>#Gin Web Framework

[![GoDoc](https://godoc.org/github.com/gin-gonic/gin?status.png)](https://godoc.org/github.com/gin-gonic/gin)
[![Build Status](https://travis-ci.org/gin-gonic/gin.svg)](https://travis-ci.org/gin-gonic/gin)

Gin is a web framework written in Golang. It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity, you will love Gin.  
![Gin console logger](http://gin-gonic.github.io/gin/other/console.png)

##Gin is new, will it be supported?

Yes, Gin is an internal project of [my](https://github.com/manucorporat) upcoming startup. We developed it and we are going to continue using and improve it.


##Roadmap for v0.2
- [x] Performance improments, reduce allocation and garbage collection overhead
- [x] Fix bugs
- [ ] Ask our designer for a cool logo
- [ ] Add tons of unit tests
- [ ] Add internal benchmarks suite
- [x] Improve logging system
- [x] Improve JSON/XML validation using bindings
- [x] Improve XML support
- [ ] Improve documentation
- [ ] Add more cool middlewares, for example redis caching (this also helps developers to understand the framework).
- [x] Continuous integration



## Start using it
Obviously, you need to have Git and Go! already installed to run Gin.  
Run this in your terminal

```
go get github.com/gin-gonic/gin
```
Then import it in your Go! code:

```
import "github.com/gin-gonic/gin"
```


##API Examples

#### Create most basic PING/PONG HTTP endpoint
```go 
package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.String(200, "pong")
	})

	// Listen and server on 0.0.0.0:8080
	r.Run(":8080")
}
```

#### Using GET, POST, PUT, PATCH, DELETE and OPTIONS

```go
func main() {
	// Creates a gin router + logger and recovery (crash-free) middlewares
	r := gin.Default()

	r.GET("/someGet", getting)<commit_msg>adding info for IRC and mailing list<commit_after>#Gin Web Framework

[![GoDoc](https://godoc.org/github.com/gin-gonic/gin?status.png)](https://godoc.org/github.com/gin-gonic/gin)
[![Build Status](https://travis-ci.org/gin-gonic/gin.svg)](https://travis-ci.org/gin-gonic/gin)

Gin is a web framework written in Golang. It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity, you will love Gin.  
![Gin console logger](http://gin-gonic.github.io/gin/other/console.png)

##Gin is new, will it be supported?

Yes, Gin is an internal project of [my](https://github.com/manucorporat) upcoming startup. We developed it and we are going to continue using and improve it.


##Roadmap for v0.2
- [x] Performance improments, reduce allocation and garbage collection overhead
- [x] Fix bugs
- [ ] Ask our designer for a cool logo
- [ ] Add tons of unit tests
- [ ] Add internal benchmarks suite
- [x] Improve logging system
- [x] Improve JSON/XML validation using bindings
- [x] Improve XML support
- [ ] Improve documentation
- [ ] Add more cool middlewares, for example redis caching (this also helps developers to understand the framework).
- [x] Continuous integration



## Start using it
Obviously, you need to have Git and Go! already installed to run Gin.  
Run this in your terminal

```
go get github.com/gin-gonic/gin
```
Then import it in your Go! code:

```
import "github.com/gin-gonic/gin"
```


##Community
If you'd like to help out with the project, there's a mailing list and IRC channel where Gin discussions normally happen.

* IRC
 * [irc.freenode.net #getgin](irc://irc.freenode.net:6667/getgin)
 * [Webchat](http://webchat.freenode.net?randomnick=1&channels=%23getgin)
* Mailing List
 * Subscribe: [<EMAIL>](mailto:<EMAIL>)
 * [Archives](http://librelist.com/browser/getgin/)


##API Examples

#### Create most basic PING/PONG HTTP endpoint
```go 
package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.String(200, "pong")
	})

	// Listen and server on 0.0.0.0:8080
	r.Run(":8080")
}
```

#### Using GET, POST, PUT, PATCH, DELETE and OPTIONS

```go
func main() {
	// Creates a gin router + logger and recovery (crash-free) middlewares
	r := gin.Default()

	r.GET("/someGet", getting)
{'fraction_non_alphanumeric': 0.1351604591239166, 'fraction_numerical': 0.010541110330288124, 'mean_word_length': 4.0058616647127785, 'pattern_counts': {'":': 2, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 10, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5226747', 'n_tokens_mistral': 1479, 'n_tokens_neox': 1375, 'n_words': 482}