V 0.1.21
parent
fa7e0ce58a
commit
223032f0ce
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -1,14 +1,24 @@
|
||||||
## V 0.1.21
|
## V 0.1.21
|
||||||
*XX Sep 2019*
|
*30 Sep 2019*
|
||||||
|
|
||||||
- `none` keyword for optionals.
|
- `none` keyword for optionals.
|
||||||
|
- Solaris support.
|
||||||
- All table lookup functions now use `none`.
|
- All table lookup functions now use `none`.
|
||||||
|
- varargs: `fn foo(bar int, params ...string) {`
|
||||||
- Double quotes (`"`) can now also be used to denote strings.
|
- Double quotes (`"`) can now also be used to denote strings.
|
||||||
- GitHub Actions CI in addition to Travis.
|
- GitHub Actions CI in addition to Travis.
|
||||||
- `-compress` option. The V binary built with `-compress` is only ~90 KB!
|
- `-compress` option. The V binary built with `-compress` is only ~90 KB!
|
||||||
- More memory management.
|
- More memory management.
|
||||||
- "Unused variable" error is now a warning in non-production builds.
|
- Unused modules result in an error.
|
||||||
|
- "Unused variable/module" errors are now warnings in non-production builds.
|
||||||
|
- Duplicate methods with the same name can no longer be defined.
|
||||||
|
- Struct names must be capitalized, variable/function names must use snake_case.
|
||||||
|
- Error messages are now even nicer!
|
||||||
|
- Lots of fixes in automatic `.str()` method generation for structs and arrays.
|
||||||
|
- ~30% faster parser (files are no longer parsed separately for each pass).
|
||||||
|
- `_` is no longer a variable, but an actual syntax construct to skip unused values, like in Go.
|
||||||
|
- Multiple returns (`fn foo() (int, strnig) {`).
|
||||||
|
- `!` can now only be used with booleans.
|
||||||
|
|
||||||
|
|
||||||
## V 0.1.20
|
## V 0.1.20
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Version = '0.1.20'
|
Version = '0.1.21'
|
||||||
)
|
)
|
||||||
|
|
||||||
enum BuildMode {
|
enum BuildMode {
|
||||||
|
@ -1066,7 +1066,7 @@ fn (v &V) test_v() {
|
||||||
vexe := os.executable()
|
vexe := os.executable()
|
||||||
parent_dir := os.dir(vexe)
|
parent_dir := os.dir(vexe)
|
||||||
if !os.dir_exists(parent_dir + '/vlib') {
|
if !os.dir_exists(parent_dir + '/vlib') {
|
||||||
println('run vlib/ is missing, it must be next to the V executable')
|
println('vlib/ is missing, it must be next to the V executable')
|
||||||
exit(1)
|
exit(1)
|
||||||
}
|
}
|
||||||
// Emily: pass args from the invocation to the test
|
// Emily: pass args from the invocation to the test
|
||||||
|
@ -1108,7 +1108,7 @@ fn (v &V) test_v() {
|
||||||
println( tmark.total_message('running V tests') )
|
println( tmark.total_message('running V tests') )
|
||||||
|
|
||||||
println('\nBuilding examples...')
|
println('\nBuilding examples...')
|
||||||
examples := os.walk_ext('examples', '.v')
|
examples := os.walk_ext(parent_dir + '/examples', '.v')
|
||||||
mut bmark := benchmark.new_benchmark()
|
mut bmark := benchmark.new_benchmark()
|
||||||
for relative_file in examples {
|
for relative_file in examples {
|
||||||
if relative_file.contains('vweb') {
|
if relative_file.contains('vweb') {
|
||||||
|
@ -1137,9 +1137,7 @@ fn (v &V) test_v() {
|
||||||
}
|
}
|
||||||
bmark.stop()
|
bmark.stop()
|
||||||
println( bmark.total_message('building examples') )
|
println( bmark.total_message('building examples') )
|
||||||
|
|
||||||
v.test_vget()
|
v.test_vget()
|
||||||
|
|
||||||
if failed {
|
if failed {
|
||||||
exit(1)
|
exit(1)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue