mirror of
https://github.com/vlang/v.git
synced 2025-09-13 22:42:26 +03:00
0.4.2 changelog
This commit is contained in:
parent
ced5f213ef
commit
5cc1db8318
4 changed files with 118 additions and 3 deletions
112
CHANGELOG.md
112
CHANGELOG.md
|
@ -1,3 +1,115 @@
|
||||||
|
## V 0.4.2
|
||||||
|
*30 September 2023*
|
||||||
|
|
||||||
|
#### Improvements in the language
|
||||||
|
- Short lambda expressions like `a.sorted(|x,y| x > y)` (#19390)
|
||||||
|
- Support `-os plan9`, `$if plan9 {`, and `_plan9.c.v` (stage 1 for plan9) (#19389)
|
||||||
|
- fmt: simplify the processing logic for removing inline comments (#19297)
|
||||||
|
- Align the custom values of the enum fields (#19331)
|
||||||
|
- Do not warn/error for `import flag as _`
|
||||||
|
- Keep anon struct decl fields in interfaces (#19461)
|
||||||
|
- Support -N, turning all notices into errors, to ease the process of finding places that may need attention/correction
|
||||||
|
|
||||||
|
#### Breaking changes
|
||||||
|
- Remove inline comments (#19263)
|
||||||
|
|
||||||
|
#### Checker improvements/fixes
|
||||||
|
- Disallow module name duplicates in local names (#18118)
|
||||||
|
- Check enum fields with duplicate value (fix #19309) (#19310)
|
||||||
|
- Disallow alias ptr cast of a map value (#19336)
|
||||||
|
- Require `else` branch in `[flag]` enum match (#19375)
|
||||||
|
- Disallow assigning pointer values to option struct fields (#19380)
|
||||||
|
- Fix generic comparison for conditional assignment (#19401)
|
||||||
|
- Allow using ! and ~ on aliased bool and integral types (#19403)
|
||||||
|
- Warn -> error for uninitialized ref fields
|
||||||
|
- Parser, checker: allow lambdas anywhere anonymous functions are expected (#19436)
|
||||||
|
- Allow for `each(a, |x| println(x))`, i.e. using lambda expressions, when expecting `fn (x int)`
|
||||||
|
- Check fixed array init with default expression (#19472)
|
||||||
|
- Allow for `const source = $embed_file(@FILE).to_string()`
|
||||||
|
- Fix C.type in imported modules
|
||||||
|
|
||||||
|
#### Parser improvements
|
||||||
|
- parser: fix fixed array with eval const size (#19269)
|
||||||
|
- parser: disallow using `sql` as name (#19298)
|
||||||
|
- parser: fix `;` support for `module x;`
|
||||||
|
- parser: fix fixed array of option values (`_ := [10]?int{}`) (#19392)
|
||||||
|
- parser: fix assigning with in another module sumtypes 2 (#19415)
|
||||||
|
- v.ast: improve Stmt.str(), showing more details about ast.Block, ast.DeferStmt, ast.ForInStmt, ast.GlobalDecl
|
||||||
|
|
||||||
|
#### Compiler internals
|
||||||
|
- pref: support `-fast-math`, passing either -ffast-math or /fp:fast (for msvc) to the C backend, and `$if fast_math {` to detect it at comptime
|
||||||
|
- parser, transformer: fix transformer.infix_expr() and cleanup parse_types.v (related #19269) (#19276)
|
||||||
|
- pref,builder: support -use-os-system-to-run to workaround segfaults using not fully updated xcode command line tools
|
||||||
|
- v.builder: fix compiling code, that imports modules from both `src/modules` and `modules` (#19437)
|
||||||
|
- os, v.builder: show more details, when a program ran by `v run file.v`, exits by a signal (fix #19412) (#19471)
|
||||||
|
|
||||||
|
#### Standard library
|
||||||
|
- math: speedup the pure V math.pow implementation for non-fractional powers (#19270)
|
||||||
|
- math: add more C. fn overrides, for the default C backend (speed up examples/path_tracing.v) (#19271)
|
||||||
|
- time: add `MMM` support for parse_format() (#19284)
|
||||||
|
- os: include sys/sysctl.h on FreeBSD to avoid implicit definition of sysctl function (#19293)
|
||||||
|
- crypto.md5: change the Digest.write return type, from `?int` to `!int` (#19311)
|
||||||
|
- v.help: use os.executable() instead of @VEXE as an anchor, so `v help` will work more robustly.
|
||||||
|
- toml: fix custom `to_toml` for complex structs (#19338)
|
||||||
|
- all: support `;` statements, allowing for oneliners like `./v -e 'import os; println( os.ls(os.args[1])!.sorted(a > b) )' vlib/math` (#19345)
|
||||||
|
- vlib: add net.http.file, allowing for `v -e "import net.http.file; file.serve()"` (#19348)
|
||||||
|
- vlib: remove functions and fields, deprecated before 2023-03-20
|
||||||
|
- toml: fix toml encoding of complex types (#19408)
|
||||||
|
- arrays: add a partition function, that splits a given array, based on a criteria, passed as a callback fn (#19417)
|
||||||
|
- toml: add decoding for struct fields of type map[string]T (#19447)
|
||||||
|
- arrays: add arrays.each, arrays.each_indexed, and tests for them
|
||||||
|
- encoding.html: implement `unescape()` (#19267)
|
||||||
|
|
||||||
|
#### Web
|
||||||
|
- net.http: fix http.fetch(), without explicit method (default again to .get, not to .acl)
|
||||||
|
- net.http: default explicitly to Method.get for http.Request and http.FetchConfig too
|
||||||
|
- examples: add examples/fetch_ip.v, showing how to contact http://ifconfig.co/json and parse the result
|
||||||
|
- net.http: fix post error with https on windows (#19334)
|
||||||
|
- net.ssl: implement SSLConn.peer_addr() (#19333)
|
||||||
|
|
||||||
|
#### ORM
|
||||||
|
- orm: add `references` attribute to allow foreign key declarations on fields (#19349)
|
||||||
|
- orm: support different foreign key types, not just an integer id (#19337)
|
||||||
|
- orm: add support for V enum struct fields (#19374)
|
||||||
|
- orm: quote table and field name in `[references]` (#19387)
|
||||||
|
|
||||||
|
#### Database drivers
|
||||||
|
- db.pg: allow postgres connection using service definitions (#19288)
|
||||||
|
|
||||||
|
#### Native backend
|
||||||
|
- native: make native tests pass on windows; refactor PE file generation (#19140)
|
||||||
|
- native: parse dll files to resolve extern symbols (#19433)
|
||||||
|
|
||||||
|
#### C backend
|
||||||
|
- Fix printing struct with thread field (#19320)
|
||||||
|
- Fix the logic around the definition of VNORETURN and VUNREACHABLE (less warnings on FreeBSD) (#19316)
|
||||||
|
- Add support for `-d trace_cgen_stmt`, document it in CONTRIBUTING.md
|
||||||
|
- Fix printing smartcast interface variable (fix #18886) (#19372)
|
||||||
|
- Fix interface with multiple embedded fields (#19377)
|
||||||
|
- Fix channel of interface (fix #19382) (#19383)
|
||||||
|
- Fix fixed array of option type default (#19397)
|
||||||
|
- Fix interface with option field (#19434)
|
||||||
|
- Fix promoting an alias typed value, to a sumtype of the alias's base type (fix #19407) (#19423)
|
||||||
|
- Remove the special plan9 support code, treat it instead as a posix system in cheaders.v (#19445)
|
||||||
|
- Fix printing slice of fn call string (#19450)
|
||||||
|
- Fix `type VType = &C.CType` (#19452)
|
||||||
|
- Fix array of fns index call with direct_array_access mode (#19460)
|
||||||
|
|
||||||
|
#### Tools
|
||||||
|
- bench: a new bench/ directory for language benchmarks
|
||||||
|
- ci: test the pure V math versions without .c.v overrides on the CI too (#19292)
|
||||||
|
- github: add automatically info about voting to all new issues (#19351)
|
||||||
|
- tools: add -E flag to `v test-parser`, that will show the partial source that caused the parser to fail with `-no-builtin -check-syntax file.v`
|
||||||
|
- ci: bring back gitly
|
||||||
|
- github: improve the voting message for issues (#19448)
|
||||||
|
- vcreate: update templates, add `lib` (#19444)
|
||||||
|
|
||||||
|
### Operating System support
|
||||||
|
- builtin: use `libgc-threaded` on FreeBSD, to get the threaded version of libgc (#19294)
|
||||||
|
|
||||||
|
#### Examples
|
||||||
|
- examples: add more .obj files for 06_obj_viewer (#19406)
|
||||||
|
|
||||||
## V 0.4.1
|
## V 0.4.1
|
||||||
*3 September 2023*
|
*3 September 2023*
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ module main
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
const git_log_cmd = 'git log --pretty=format:"%s" --simplify-merges'
|
const git_log_cmd = 'git log -n 500 --pretty=format:"%s" --simplify-merges'
|
||||||
|
|
||||||
enum Category {
|
enum Category {
|
||||||
checker
|
checker
|
||||||
|
@ -194,6 +194,7 @@ const category_map = {
|
||||||
.comptime: '#### Comptime'
|
.comptime: '#### Comptime'
|
||||||
.tools: '#### Tools'
|
.tools: '#### Tools'
|
||||||
.compiler_internals: '#### Compiler internals'
|
.compiler_internals: '#### Compiler internals'
|
||||||
|
.examples: '#### Examples'
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (l Line) write_at_category(txt string) ?string {
|
fn (l Line) write_at_category(txt string) ?string {
|
||||||
|
|
|
@ -277,7 +277,8 @@ fn main() {
|
||||||
obj_part: 0
|
obj_part: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
app.file_name = 'v.obj' // default object is the v logo
|
// app.file_name = 'v.obj' // default object is the v logo
|
||||||
|
app.file_name = 'utahTeapot.obj' // default object is the v logo
|
||||||
|
|
||||||
app.single_material_flag = false
|
app.single_material_flag = false
|
||||||
$if !android {
|
$if !android {
|
||||||
|
|
|
@ -4804,7 +4804,8 @@ fn (mut c Checker) ensure_type_exists(typ ast.Type, pos token.Pos) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
sym := c.table.sym(typ)
|
sym := c.table.sym(typ)
|
||||||
if !c.is_builtin_mod && sym.kind == .struct_ && !sym.is_pub && sym.mod != c.mod {
|
if !c.is_builtin_mod && sym.kind == .struct_ && !sym.is_pub && sym.language == .v
|
||||||
|
&& sym.mod != c.mod {
|
||||||
c.error('struct `${sym.name}` was declared as private to module `${sym.mod}`, so it can not be used inside module `${c.mod}`',
|
c.error('struct `${sym.name}` was declared as private to module `${sym.mod}`, so it can not be used inside module `${c.mod}`',
|
||||||
pos)
|
pos)
|
||||||
return false
|
return false
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue