You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: changelogs/v3.0.md
+14-16Lines changed: 14 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,29 +6,29 @@ Software Engineer at LoiLo Inc.
6
6
7
7
## Summary
8
8
9
-
We release `exql` v3, the second major update since 2020. For additional 3 years after v2 release, we noticed that the tool is mature enough to keep using on the next 3 years.
9
+
We are releasing `exql` v3, the second major update since 2020. Over the three years since the v2 release, we have found that the tool is mature enough to keep using for the next three years.
10
10
11
-
To develop v3, we concentrated on tightening the security, backing to the our first design concept: **Safe**.
11
+
In developing v3, we concentrated on tightening security and returning to our original design concept: **Safe**.
12
12
13
13
## Cleaning a Vulnerability
14
14
15
-
`exql` is thin, dependency less tool. Until now, we were depending on few external modules to interpolate very small gaps.
15
+
`exql` is a thin, dependency-small tool. Until now, we had relied on a few external modules to fill very small gaps.
16
16
17
-
However, situations around us have been changed silently. We’re still using`exql` aggressively internally. Developers mostly are satisfied with features. Any other ORM libraries are absolutely not attaractive to us.
17
+
However, the situation around us has changed silently. We still use`exql` aggressively internally. Developers are mostly satisfied with its features. Other ORM libraries are absolutely not attractive to us.
18
18
19
-
We’ve seen a decline — or stabilization — of Go community in this several years. Many famous tools got archived and developers come to a diaspora. I know, of course, that is the right being of free open software. But, there’re things unacceptable: **Vulnerability**.
19
+
Over the past several years, we have seen a decline, or at least a stabilization, in the Go community. Many well-known tools have been archived, and developers have dispersed. Of course, I understand that this is part of the nature of free and open source software. But there is one thing we cannot accept: **vulnerability**.
20
20
21
21
## Importance of Purity
22
22
23
-
Recently we found a highly dangerous zero-day vulnerability within `exql` dependencies. I reported the issue to maintainers, recommending to fix the problem. But no message returned. Project is completely dead.
23
+
Recently, we found a highly dangerous zero-day vulnerability in one of `exql`'s dependencies. I reported the issue to the maintainers and recommended that they fix the problem. But no response came back. The project is completely dead.
24
24
25
-
So, we decided to remove all external dependencies and make us “pure” module from v3. Now all core logics are implemented by Go (`database/sql`) and `exql` itself.
25
+
So, we decided to remove all external dependencies and make `exql` a "pure" module from v3 onward. Now all core logic is implemented in Go (`database/sql`) and `exql` itself.
26
26
27
27
## Migration
28
28
29
-
From v3, for the field value of nullable columns of generated model, `loilo-inc/exql/v3/null` will be used. They are inheriting implementation of `sql.Null[T]`, added in Go 1.22. We additionally added several interfaces to interpolate a gap.
29
+
From v3, `loilo-inc/exql/v3/null` will be used for nullable column fields in generated models. It inherits the implementation of `sql.Null[T]`, which was added in Go 1.22. We additionally added several interfaces to fill the remaining gap.
30
30
31
-
`sql.Null[T` implements:
31
+
`sql.Null[T]` implements:
32
32
33
33
-`driver.Valuer`
34
34
-`sql.Scanner`
@@ -39,22 +39,22 @@ So, we decided to remove all external dependencies and make us “pure” module
39
39
-`json.Marshaler`
40
40
-`encoding.TextUnmarshaler`
41
41
42
-
Those are interfaces that were implemented in `volatiletech/null`.
42
+
These are the interfaces that were implemented in `volatiletech/null`.
43
43
44
44
## Performance
45
45
46
-
Introduced minor performance improvoments. For detail, see:
46
+
We introduced minor performance improvements. For details, see:
47
47
48
48
<https://github.com/loilo-inc/exql/pull/72>
49
49
50
50
## Breaking Changes
51
51
52
-
-`exql.Mapper` has been removed for it was scheduled.
53
-
-`xerrors` has been replaced with `errors` / `fmt`for deprecation.
52
+
-`exql.Mapper` has been removed, as planned.
53
+
-`xerrors` has been replaced with `errors` / `fmt`due to its deprecation.
54
54
55
55
### Error handling changes
56
56
57
-
`exql.ErrRecordNotFound` has changed to struct from variable. Use `errors.Is` to check them. From v3, all explicit errors must be exported as struct.
57
+
`exql.ErrRecordNotFound` has changed from a variable to a struct. Use `errors.Is` to check for it. From v3, all explicit errors are exported as structs.
58
58
59
59
```go
60
60
err = MapRows(rows, &dest)
@@ -63,5 +63,3 @@ if errors.Is(err, ErrRecordNotFound{}) {
0 commit comments