Fin rebrand

This commit is contained in:
Sky Johnson 2025-04-18 12:12:49 -05:00
parent ae15234e7f
commit c19fbe8b2a
9 changed files with 28 additions and 30 deletions

View File

@ -1,14 +1,12 @@
# Sharkk Config File # Fin
SCF, pronounced scuff! Fin is a very light, very intuitive config file format! Few symbols, few rules, quite flexible. Has support for comments, arrays, maps, and type guarantees.
A very light, very intuitive config file format! Few symbols, few rules, quite flexible. Has support for comments, arrays, maps, and type guarantees. Mercilessly benchmarked, fully tested. Fin competes toe-to-toe with Go's native JSON library, and handily outperforms the reference TOML and YAML implementations.
Mercilessly benchmarked, fully tested. SCF competes toe-to-toe with Go's native JSON library, and handily outperforms the reference TOML and YAML implementations.
## Format ## Format
SCF has very very simple syntax. Fin has very very simple syntax.
``` ```
-- Lua style comments! -- Lua style comments!
@ -40,7 +38,7 @@ database {
## Installation ## Installation
```bash ```bash
go get git.sharkk.net/Go/Config go get git.sharkk.net/Sharkk/Fin
``` ```
## Usage ## Usage
@ -54,7 +52,7 @@ import (
"fmt" "fmt"
"os" "os"
config "git.sharkk.net/Go/Config" "git.sharkk.net/Sharkk/Fin"
) )
func main() { func main() {
@ -65,7 +63,7 @@ func main() {
defer file.Close() defer file.Close()
// Pass a string to be loaded by the parser! // Pass a string to be loaded by the parser!
cfg, err := config.Load(file) cfg, err := fin.Load(file)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -119,24 +117,24 @@ This parser provides competitive performance compared to popular formats like JS
| Benchmark | Operations | Time (ns/op) | Memory (B/op) | Allocations (allocs/op) | | Benchmark | Operations | Time (ns/op) | Memory (B/op) | Allocations (allocs/op) |
|-----------|----------:|-------------:|--------------:|------------------------:| |-----------|----------:|-------------:|--------------:|------------------------:|
| **Small Config Files** | | **Small Config Files** |
| Config | 1,000,000 | 1,052 | 1,743 | 15 | | Fin | 1,000,000 | 1,052 | 1,743 | 15 |
| JSON | 1,000,000 | 1,112 | 1,384 | 23 | | JSON | 1,000,000 | 1,112 | 1,384 | 23 |
| YAML | 215,121 | 5,600 | 8,888 | 82 | | YAML | 215,121 | 5,600 | 8,888 | 82 |
| TOML | 286,334 | 4,483 | 4,520 | 67 | | TOML | 286,334 | 4,483 | 4,520 | 67 |
| **Medium Config Files** | | **Medium Config Files** |
| Config | 211,863 | 5,696 | 4,056 | 74 | | Fin | 211,863 | 5,696 | 4,056 | 74 |
| JSON | 261,925 | 4,602 | 5,344 | 89 | | JSON | 261,925 | 4,602 | 5,344 | 89 |
| YAML | 50,010 | 23,965 | 21,577 | 347 | | YAML | 50,010 | 23,965 | 21,577 | 347 |
| TOML | 68,420 | 17,639 | 16,348 | 208 | | TOML | 68,420 | 17,639 | 16,348 | 208 |
| **Large Config Files** | | **Large Config Files** |
| Config | 55,338 | 21,556 | 12,208 | 207 | | Fin | 55,338 | 21,556 | 12,208 | 207 |
| JSON | 70,219 | 17,202 | 18,140 | 297 | | JSON | 70,219 | 17,202 | 18,140 | 297 |
| YAML | 12,536 | 95,945 | 65,568 | 1,208 | | YAML | 12,536 | 95,945 | 65,568 | 1,208 |
| TOML | 14,732 | 74,198 | 66,050 | 669 | | TOML | 14,732 | 74,198 | 66,050 | 669 |
*Benchmarked on AMD Ryzen 9 7950X 16-Core Processor* *Benchmarked on AMD Ryzen 9 7950X 16-Core Processor*
## Why Choose SCF? ## Why Choose Fin?
- **Readability**: Simple syntax that's easy for humans to read and write - **Readability**: Simple syntax that's easy for humans to read and write
- **Flexibility**: Supports various data types and nested structures - **Flexibility**: Supports various data types and nested structures

View File

@ -5,7 +5,7 @@ import (
"strings" "strings"
"testing" "testing"
config "git.sharkk.net/Go/SCF" config "git.sharkk.net/Sharkk/Fin"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )

View File

@ -6,7 +6,7 @@ import (
"strings" "strings"
"testing" "testing"
config "git.sharkk.net/Go/SCF" config "git.sharkk.net/Sharkk/Fin"
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )

View File

@ -1,4 +1,4 @@
package scf package fin
import ( import (
"fmt" "fmt"

2
go.mod
View File

@ -1,4 +1,4 @@
module git.sharkk.net/Go/SCF module git.sharkk.net/Sharkk/Fin
go 1.24.1 go 1.24.1

View File

@ -1,4 +1,4 @@
package scf package fin
import ( import (
"sync" "sync"

View File

@ -1,4 +1,4 @@
package scf package fin
import ( import (
"bufio" "bufio"

View File

@ -5,7 +5,7 @@ import (
"strings" "strings"
"testing" "testing"
config "git.sharkk.net/Go/SCF" config "git.sharkk.net/Sharkk/Fin"
) )
func TestBasicKeyValuePairs(t *testing.T) { func TestBasicKeyValuePairs(t *testing.T) {

View File

@ -1,4 +1,4 @@
package scf package fin
// TokenType represents the type of token // TokenType represents the type of token
type TokenType int type TokenType int