Skip to content

Commit 8b7bcf0

Browse files
committed
Repo cleanup, nothing, unknown, and instance.
1 parent a3b080b commit 8b7bcf0

23 files changed

Lines changed: 210 additions & 105 deletions

.github/ISSUE_TEMPLATE/bug.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
name: Report a bug
3+
about: Report any issues with ByteNet
4+
title: ''
5+
labels: 'type: bug'
6+
---

.github/ISSUE_TEMPLATE/feature.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
name: Suggest a feature
3+
about: Request for a feature to be added to ByteNet
4+
title: ''
5+
labels: 'type: feature request'
6+
---
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
name: Suggest an improvement
3+
about: Request for an improvement (Optimization, docs, API change, etc.) for ByteNet
4+
title: ''
5+
labels: 'type: enhancement'
6+
---

CHANGELOG.md

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,36 @@
1-
# ByteNet
1+
# ByteNet Changelog
22

3-
This project uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
3+
ByteNet uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
44

55
---
66

7-
## version 0.4.0
7+
## 0.4.0-rc3
88

99
### Added
1010
- Namespaces have been added.
1111
- Structs have been added.
12+
- Three new data types: Instance, unknown, and nothing. The "nothing" type is to allow for packets without any contents.
13+
- Added `:wait()` to packets.
1214

1315
### Improvements
1416
- Packets are now based off closures, instead of metatables. This means you now have to use `.` indexxing instead of `:` to call methods.
1517
- You can now have duplicate packet contents
1618
- Packets now take a single value (Which can be a struct) instead of being "special".
17-
- Significant optimization
19+
- Significant optimization: Packets are now singular values that can be structs, which reduces complexity, thus increasing performance.
20+
21+
### Fixes
22+
- Added `:sendTo()` to the `Packet` type. This fixes autocomplete.
1823

1924
---
2025

21-
## version 0.3.1
26+
## 0.3.1
2227

2328
### Improvements
2429
- Rewrote serialization to use an allocator w/ resizing instead of using "deferred write" functions. Should be an incredibly large performance boost.
2530

2631
---
2732

28-
## version 0.3.0
33+
## 0.3.0
2934

3035
### Added
3136
- Types: Vector2, CFrame, Array, Optional, Map
@@ -38,15 +43,15 @@ This project uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
3843

3944
---
4045

41-
## version 0.2.1
46+
## 0.2.1
4247

4348
### Fixes
4449

4550
- Fixed absolute reference that broke the package. oops.
4651

4752
---
4853

49-
## version 0.2.0
54+
## 0.2.0
5055

5156
### Added
5257

@@ -65,15 +70,15 @@ This project uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
6570

6671
---
6772

68-
## version 0.1.3
73+
## 0.1.3
6974

7075
### Fixes
7176

7277
- Fixed not all data types having types
7378

7479
---
7580

76-
## version 0.1.2
81+
## 0.1.2
7782

7883
### Fixes
7984

@@ -82,7 +87,7 @@ This project uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
8287

8388
---
8489

85-
## version 0.1.1
90+
## 0.1.1
8691

8792
### Improvements
8893

@@ -95,4 +100,4 @@ This project uses [semantic versioning](https://semver.org/spec/v2.0.0.html).
95100

96101
---
97102

98-
## version 0.1.0 (Release)
103+
## 0.1.0 (Release)

CONTRIBUTING.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Contributing to ByteNet
2+
3+
---
4+
5+
# Tooling
6+
Ensure you have Aftman installed. After, run `aftman install` to fetch all the required tooling.
7+
8+
## Extensions
9+
- Luau LSP
10+
- Selene
11+
- Rojo
12+
- StyLua
13+
14+
---
15+
16+
# Testing
17+
Use `dev.project.json`, and to test new features, just alter the code in that directory.
18+
It is hard to use automated testing w/ networking libraries. There will be a better testing solution eventually.

sourcemap.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"name":"bytenet-dev","className":"DataModel","filePaths":["dev.project.json"],"children":[{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Packages","className":"Folder","children":[{"name":"ByteNet","className":"ModuleScript","filePaths":["src\\init.luau"],"children":[{"name":"dataTypes","className":"Folder","children":[{"name":"array","className":"ModuleScript","filePaths":["src\\dataTypes\\array.luau"]},{"name":"bool","className":"ModuleScript","filePaths":["src\\dataTypes\\bool.luau"]},{"name":"buff","className":"ModuleScript","filePaths":["src\\dataTypes\\buff.luau"]},{"name":"cframe","className":"ModuleScript","filePaths":["src\\dataTypes\\cframe.luau"]},{"name":"float32","className":"ModuleScript","filePaths":["src\\dataTypes\\float32.luau"]},{"name":"float64","className":"ModuleScript","filePaths":["src\\dataTypes\\float64.luau"]},{"name":"int16","className":"ModuleScript","filePaths":["src\\dataTypes\\int16.luau"]},{"name":"int32","className":"ModuleScript","filePaths":["src\\dataTypes\\int32.luau"]},{"name":"int8","className":"ModuleScript","filePaths":["src\\dataTypes\\int8.luau"]},{"name":"map","className":"ModuleScript","filePaths":["src\\dataTypes\\map.luau"]},{"name":"optional","className":"ModuleScript","filePaths":["src\\dataTypes\\optional.luau"]},{"name":"string","className":"ModuleScript","filePaths":["src\\dataTypes\\string.luau"]},{"name":"struct","className":"ModuleScript","filePaths":["src\\dataTypes\\struct.luau"]},{"name":"uint16","className":"ModuleScript","filePaths":["src\\dataTypes\\uint16.luau"]},{"name":"uint32","className":"ModuleScript","filePaths":["src\\dataTypes\\uint32.luau"]},{"name":"uint8","className":"ModuleScript","filePaths":["src\\dataTypes\\uint8.luau"]},{"name":"vec2","className":"ModuleScript","filePaths":["src\\dataTypes\\vec2.luau"]},{"name":"vec3","className":"ModuleScript","filePaths":["src\\dataTypes\\vec3.luau"]}]},{"name":"namespaces","className":"Folder","children":[{"name":"namespace","className":"ModuleScript","filePaths":["src\\namespaces\\namespace.luau"]},{"name":"namespacesDependencies","className":"ModuleScript","filePaths":["src\\namespaces\\namespacesDependencies.luau"]},{"name":"packetIDs","className":"ModuleScript","filePaths":["src\\namespaces\\packetIDs.luau"]}]},{"name":"packets","className":"Folder","children":[{"name":"definePacket","className":"ModuleScript","filePaths":["src\\packets\\definePacket.luau"]},{"name":"packet","className":"ModuleScript","filePaths":["src\\packets\\packet.luau"]}]},{"name":"process","className":"Folder","children":[{"name":"bufferWriter","className":"ModuleScript","filePaths":["src\\process\\bufferWriter.luau"]},{"name":"client","className":"ModuleScript","filePaths":["src\\process\\client.luau"]},{"name":"read","className":"ModuleScript","filePaths":["src\\process\\read.luau"]},{"name":"server","className":"ModuleScript","filePaths":["src\\process\\server.luau"]}]},{"name":"replicated","className":"Folder","children":[{"name":"replicatedValue","className":"ModuleScript","filePaths":["src\\replicated\\replicatedValue.luau"]},{"name":"values","className":"ModuleScript","filePaths":["src\\replicated\\values.luau"]}]},{"name":"types","className":"ModuleScript","filePaths":["src\\types.luau"]}]}]},{"name":"shared","className":"Folder","children":[{"name":"testPackets","className":"ModuleScript","filePaths":["dev/shared\\testPackets.luau"]}]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"server","className":"Folder","children":[{"name":"serverTests","className":"Script","filePaths":["dev/server\\serverTests.server.luau"]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"clientTests","className":"LocalScript","filePaths":["dev/client\\clientTests.client.luau"]}]}]}]}
1+
{"name":"bytenet-dev","className":"DataModel","filePaths":["dev.project.json"],"children":[{"name":"ReplicatedStorage","className":"ReplicatedStorage","children":[{"name":"Packages","className":"Folder","children":[{"name":"ByteNet","className":"ModuleScript","filePaths":["src\\init.luau"],"children":[{"name":"dataTypes","className":"Folder","children":[{"name":"array","className":"ModuleScript","filePaths":["src\\dataTypes\\array.luau"]},{"name":"bool","className":"ModuleScript","filePaths":["src\\dataTypes\\bool.luau"]},{"name":"buff","className":"ModuleScript","filePaths":["src\\dataTypes\\buff.luau"]},{"name":"cframe","className":"ModuleScript","filePaths":["src\\dataTypes\\cframe.luau"]},{"name":"float32","className":"ModuleScript","filePaths":["src\\dataTypes\\float32.luau"]},{"name":"float64","className":"ModuleScript","filePaths":["src\\dataTypes\\float64.luau"]},{"name":"int16","className":"ModuleScript","filePaths":["src\\dataTypes\\int16.luau"]},{"name":"int32","className":"ModuleScript","filePaths":["src\\dataTypes\\int32.luau"]},{"name":"int8","className":"ModuleScript","filePaths":["src\\dataTypes\\int8.luau"]},{"name":"map","className":"ModuleScript","filePaths":["src\\dataTypes\\map.luau"]},{"name":"nothing","className":"ModuleScript","filePaths":["src\\dataTypes\\nothing.luau"]},{"name":"optional","className":"ModuleScript","filePaths":["src\\dataTypes\\optional.luau"]},{"name":"string","className":"ModuleScript","filePaths":["src\\dataTypes\\string.luau"]},{"name":"struct","className":"ModuleScript","filePaths":["src\\dataTypes\\struct.luau"]},{"name":"uint16","className":"ModuleScript","filePaths":["src\\dataTypes\\uint16.luau"]},{"name":"uint32","className":"ModuleScript","filePaths":["src\\dataTypes\\uint32.luau"]},{"name":"uint8","className":"ModuleScript","filePaths":["src\\dataTypes\\uint8.luau"]},{"name":"vec2","className":"ModuleScript","filePaths":["src\\dataTypes\\vec2.luau"]},{"name":"vec3","className":"ModuleScript","filePaths":["src\\dataTypes\\vec3.luau"]},{"name":"unknown","className":"ModuleScript","filePaths":["src\\dataTypes\\unknown.luau"]},{"name":"inst","className":"ModuleScript","filePaths":["src\\dataTypes\\inst.luau"]}]},{"name":"namespaces","className":"Folder","children":[{"name":"namespace","className":"ModuleScript","filePaths":["src\\namespaces\\namespace.luau"]},{"name":"namespacesDependencies","className":"ModuleScript","filePaths":["src\\namespaces\\namespacesDependencies.luau"]},{"name":"packetIDs","className":"ModuleScript","filePaths":["src\\namespaces\\packetIDs.luau"]}]},{"name":"packets","className":"Folder","children":[{"name":"definePacket","className":"ModuleScript","filePaths":["src\\packets\\definePacket.luau"]},{"name":"packet","className":"ModuleScript","filePaths":["src\\packets\\packet.luau"]}]},{"name":"process","className":"Folder","children":[{"name":"bufferWriter","className":"ModuleScript","filePaths":["src\\process\\bufferWriter.luau"]},{"name":"client","className":"ModuleScript","filePaths":["src\\process\\client.luau"]},{"name":"read","className":"ModuleScript","filePaths":["src\\process\\read.luau"]},{"name":"server","className":"ModuleScript","filePaths":["src\\process\\server.luau"]}]},{"name":"replicated","className":"Folder","children":[{"name":"replicatedValue","className":"ModuleScript","filePaths":["src\\replicated\\replicatedValue.luau"]},{"name":"values","className":"ModuleScript","filePaths":["src\\replicated\\values.luau"]}]},{"name":"types","className":"ModuleScript","filePaths":["src\\types.luau"]}]}]},{"name":"shared","className":"Folder","children":[{"name":"testPackets","className":"ModuleScript","filePaths":["dev/shared\\testPackets.luau"]}]}]},{"name":"ServerScriptService","className":"ServerScriptService","children":[{"name":"server","className":"Folder","children":[{"name":"serverTests","className":"Script","filePaths":["dev/server\\serverTests.server.luau"]}]}]},{"name":"StarterPlayer","className":"StarterPlayer","children":[{"name":"StarterPlayerScripts","className":"StarterPlayerScripts","children":[{"name":"clientTests","className":"LocalScript","filePaths":["dev/client\\clientTests.client.luau"]}]}]}]}

src/dataTypes/README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
This folder contains all of the data types contained within ByteNet. They are all imported manually in `src/init.luau`.
2+
3+
Each data type follows the `dataTypeInterface` type. Static types (That don't need any parameters) should generally have the following template:
4+
```lua
5+
local dataTypeName = {
6+
read = function(b: buffer, cursor: number)
7+
return value, length
8+
end,
9+
10+
write = function(value)
11+
-- Allocate the data here
12+
alloc()
13+
14+
-- write the value here
15+
end,
16+
}
17+
18+
return function(): dataTypeInterface<type>
19+
return dataTypeName
20+
end
21+
```
22+
23+
Dynamic data types are a little more performance-costly. They should follow the following format:
24+
```lua
25+
return function(parameter): dataTypeInterface<type>
26+
return {
27+
-- Same as static types here
28+
}
29+
end
30+
```
31+
32+
You will notice that this results in closure duping. This is necessary memory overhead, and while unfortunate, it doesn't actually cost that much. The speed benefits are far greater.
33+
34+
When a data type requires another data type as a parameter, the `read` and `write` functions should be localized like so:
35+
```lua
36+
return function(parameterDataType: dataTypeInterface<any>): dataTypeInterface<type>
37+
local write = parameterDataType.write
38+
local read = parameterDataType.read
39+
end
40+
```
41+
42+
While this is a micro optimization, it also helps for readability, so it is generally worth it.

src/dataTypes/bool.luau

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ local bool = {
1515
read = function(b: buffer, cursor: number)
1616
return buffer.readu8(b, cursor) == 1, 1
1717
end,
18+
1819
write = function(value: boolean)
1920
alloc(1)
2021

src/dataTypes/inst.luau

Whitespace-only changes.

src/dataTypes/nothing.luau

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
local types = require(script.Parent.Parent.types)
2+
3+
local nothing = {
4+
write = function() end,
5+
read = function()
6+
return nil, 0
7+
end,
8+
}
9+
10+
return function(): types.dataTypeInterface<nil>
11+
return nothing
12+
end

0 commit comments

Comments
 (0)