- Planned.
- Support Cryptography library.
- Support GUI library.
- Support OpenCV library.
- Support HTTP Server library.
- Enhancement Plan
- Package Maneger
- Dependency check between packages.
- Scan for the update.
- Search packages with pattern matching.
- Package Maneger
- Improvements/Enhancements
- #352: JIT library enhancement.
- Support a string and a binary.
- Load a C function and use it.
- Direct write of a literal without Jit.IMM.
- Support mov8, mov16, mov32, fmov, and fmov32 for more flexible.
- #352: JIT library enhancement.
- Bug fixes
- #360: Operator
<<
doesn't work for a string in a variable.. - #358: String doesn't work in JIT lib.
- #360: Operator
- New Features
- #232: Supported a Package Manager named as
Kip
.- 1st version with no dependency check and no update check.
- #275: Supported SAT solver by picosat.
- #232: Supported a Package Manager named as
- Improvements/Enhancements
- #261: Separated binary modules in extlib to another repository & reduced a repository size.
- #255: Improved the
operator[]
inRange
. - #264: Supported to change directory.
- #265: Supported
$pwd
for getting a current directory. - #272: Supported a binary mode in HTTP.
- #273: Supported
read
/write
inFile
. - #290: Supported
chmod
inFile
. - #308: Improvement of the stack usage.
- #316: Changed a specification of a label to be with 2 colons.
- #332: Supported any radix on the
Integer.toString()
method. - #343: Supported an exponent representation for a real number literal.
- #346: Supported an assignment of inherit class instance to the variable having the base class type.
- Small improvements and enhancements as follows without managing by issues.
- Supported SemanticVersion class with
using SemanticVersion;
. - Supported putting a comma at the end of an argument's list for both declaration and calling.
- Added operators of
==
and!=
in Boolean class. - Supported
String#isIntegerString
. - Shared an implementation of conversion for a string, an integer, and a double.
- Improved type analysis for the language server.
- SpecTest: Made a space wider of Test case number.
- Improved Array.keySet() for
Array
itself. - Improved a type check a little in assignment.
- Supported SemanticVersion class with
- Bug Fixed
- #235: Crash when using
_
outside a function. - #236: Can't specify the class as a return type of function.
- #237: Comparing between variables having a string is failed.
- #256: Comparison operator will be failed with an integer on LHS and a variable(double) on RHS.
- #257: Fails a destructuring assignment when declaration with const.
- #258: There is a case that the bytecode is not outputted.
- #267: Can't use a variable name using an upper case in debugger.
- #269: Object item is removed by flatten().
- #274: No error for multiple
const
declaration for the same variable. - #284: Fixed a segmentation fault problem on Linux.
- #288: Incorrect message is displayed when
File.open
failed. - #289:
File.setFiledate
does not work correctly. - #293: Fixed a problem of a stack overflow with
=~
or!~
. - #301: Fixed a prblem of using
ctx
after cleanup. - #302: Fixed a prblem of the string optimization.
- #305: Fixed a prblem of no POPC in try.
- #314: Fixed a crash when accessing uninitialized object in native.
- #331: Fixed an incorrect handling of a big integer literal in lexer.
- #341: Fixed a problem that it crashes in destructuring assignment.
- #342: Fixed a problem that a pin operator in not avaiable at 2nd item or later in array.
- #345: Fixed to block the unsupported type conversion in native.
- #235: Crash when using
This is 1st official release version.
- See Kinx Specification for a specification.
Small updates from v0.22.0
- Updated
- Updated
Functional
.
- See Functional for details.
- Supported String Color methods with Escape Sequence.
- See String for details.
- Updated Documentation & SpecTest.
- Some bug fixes and improvements.
- Updated
- Supported a pipeline and a function compoition operator.
See a pipeline, a function composition, and a library of Functional for details.
- Supported a pipeline operator of
a |> b
which is just same asb(a)
. - Supported a pipeline operator of
a <| b
which is just same asa(b)
. - Supported a function composition operator of
a +> b
which is like{ => b(a(_1)) }
. - Supported a function composition operator of
a <+ b
which is like{ => a(b(_1)) }
.
- Supported a pipeline operator of
- Supported to read/write from/to Clipboard.
- By
var cb = new Clipboard();
, then you can:- Use
cb.write(str)
to writestr
to clipboard, or - Use
cb.read()
to read a text from clipboard.
- Use
- By
- Documentation & SpecTest complete.
- The documents which was planned was prepared at least, although the quality should be increased.
- Some bug fixes and improvements.
- Supported a pipeline and a function compoition operator.
See a pipeline, a function composition, and a library of Functional for details.
- Updated
- Obsoleted a dot style of string literal like
.abc
which means"abc"
.- This is changed to another feature.
- Newly
.abc
is a function object which means{ => _1.abc.isFunction ? _1.abc() : _1.abc }
. - And also
.is***
like.isFunction
to check a type is a function object which means{ => _1.is*** }
. - This feature will care for the purpose below.
- As a call back method for methods of Array such as
Array#map
,Array#filter
, and so on. - As a function object placed at a
when
clause incase-when
.
- As a call back method for methods of Array such as
- Updated
case-when
features.- Supported
^
as a pin operator. - Supported an lvalue of array with index at
when
condition. - Supported
|
operator for multiple conditions called as alternative pattern atwhen
condition. - Supported putting a function object to check the result by function call at
when
condition. - Changed to make it error when the length of array is mismatched.
_
means to ignore binding a value atwhen
condition.
- Supported
- Introduced a
when
label inswitch
statement.- This can be used a substitute of a
case
label, and it will dobreak
automatically by default. - When specifying
fallthrough;
at the last statement of awhen
clause, it will be fallthrough. - The label instead of
default:
iselse:
which will dobreak
automatically at the end of statements. - The
fallthrough
keyword in acase
is meaningless and it will be ignored. - You can mix a
case
label and awhen
label, but it is not recommended. switch-when
is a statement and it is same asswitch-case
except a behavior ofbreak
andfallthrough
.
- This can be used a substitute of a
- Updated some type system.
- For type check in a language server.
- Making a compile error when it is unknown type or type mismatch in assignment.
- I am very sorry but, after a reconsideration I desided to change a syntax for a return type of native again.
Instead, It was possible to add a syntax that you can specify a return type also for a normal function.
However note that a return type for a normal function is currently just an information to the language server.
- OLD
native:int
- NEW/ADD
native funcname(args):int
function funcname(args):int
public funcname(args):int
private funcname(args):int
- OLD
- Some bug fixes and improvements.
- Obsoleted a dot style of string literal like
- Updated
- Added the same directory as a current parsing file to a search path for
using
. - Introduced
File#getUtf8Char()
to get directly UTF8 character from a File object including$stdin
. - Introduced newly
case-when
expression for trial.- See case-when for details.
- Supported a different variable name from an object key in assignment, declaration, and function arguments.
var { x: a, y: b } = { x: 10, y: 100 }
meansa = 10, b = 100
.
- Supported a pattern matching syntax in assignment, declaration, and function arguments.
var { x: a, y: 100 } = { x: 10, y: m }
meansa = 10
ifm == 100
, otherwise an exception occurs.
- Supported an object key style also with an assignment.
{ x, y } = { x: 10, y: 100 }
meansx = 10, y = 100
.
- Relocation of build environment.
- Created a
build
directory and moved files needed at building to thebuild
directory.
- Created a
- Some bug fixes and improvements.
- Added the same directory as a current parsing file to a search path for
- Updated
- Added some features to use a language server.
- Added a debugger mode for debugging.
- Please see the debugger document to know how to use it.
- Removed KiTyy files to reduce a repository size.
- KiTTy needs a lot of big files like a font.
- KiTTy was moved to https://github.com/Kray-G/kinx-tiny-typesetting.
- Updated Copyright.
- Some bug fixes and improvements.
- Updated
- Introduced
$kinxpath
for Kinx installation path. - Instead,
$exepath
means an actual executable's path. - Added some features for a language server.
- Added some options for the source input from STDIN.
- Added displaying variable definition and reference location.
- Some bug fixes and improvements.
- Introduced
- Updated
- Windows Installer will automatically add the path to the Kinx executable
to the
Path
environment variable after installation. - Added the bucket for Scoop, and it is easy to install Kinx into Windows through the Scoop manager.
- Some bug fixes and improvements.
- Windows Installer will automatically add the path to the Kinx executable
to the
- Updated
- Support an installer for Linux, such as
kinx_0.17.0-0_amd64.deb
. - Support an installer for Windows, such as
Kinx_installer_x64.0.17.0.exe
. - Support
catch
without specifying an exception object.- This is like
try { ... } catch { ... }
.
- This is like
- Support a cast syntax in native with an
as
keyword.- Use
as
after a variable such asvar x = 10 as big
, and cast it.
- Use
- Support Big Integer in native.
- Support Multidimensional Array in native.
- Changed a syntax for a return type of native. It becomes same as a syntax for an argument.
- [OLD]
native<int>
- [NEW]
native:int
- [OLD]
- Some bug fixes and improvements.
- Support an installer for Linux, such as
- Updated
- Support Array of Double in native.
- Updated some SpecTest pages.
- Some bug fixes and improvements.
- Updated
- Updated some SpecTest pages.
- Some bug fixes and improvements.
- Updated
- Updated
- Supported
Tiny Typesetting
library.- Not documented yet, wait for the next release.
- Added duktape library to execute JavaScript internally.
- Added phantomjs for a typesetting library.
- Added a small Markdown Parser.
- Integrated
kc-json
to this project. - Supported loading multiple libraries by
using
. - Some bug fixes and improvements.
- Supported
- Updated
- Supported SSH & libssh2 library.
- Supported an iconv library.
- Supported
"\uXXXX"
and"\u{CodePoint}"
as Unicode Code Point in a string literal. - Supported a TCP/UDP socket library.
- Support PDF library with libHaru.
- Some bug fixes and improvements.
- Updated
- Improved
String#split
to support UTF-8. - Supported
Parsek#noneOf
. - Added a script name into an argument list with
--exec
option. - Supported a
$env
variable without a property to get all environment variables. - Improved
String#each
to iterate a character according to UTF-8. - Supported
String.escapeHtml
. - Supported utf8 in
Parsek#oneOf
. - Added a CLI support of kinx content.
- Some bug fixes and improvements.
- Improved
- Updated
- Supported a numbered parameter of a function argument.
- It is available from
_1
to_9
, and_1
is the first argument. _
is also available and it is assigned the variable according to the order of appearance.(&() => _ + _)
is same as(&() => _1 + _2)
- It is available from
- Supported a callback block syntax when a callback function is the last argument parameter.
- For example,
f(2, 10) { &(a, b) return a + b; }
meansf(2, 10, &(a, b) => { return a + b; })
. - For another example, you can pass a block to
.map
like[4, 5, 6].map { => _1 * 2 }
. - See this example to check the supported syntax.
- For example,
- Supported the syntax to skip a parameter to ignore assignment like
[a,,c] = [1,2,3]
. - Supported the syntax of array assignement with a function argument.
- A function argument example is
function func([a, b]) { /* ... */ }
.
- A function argument example is
- Supported the syntax to get the value of an object property like
var {xxx} = { xxx: 100 }
.- In this case it assigns
100
to the variable ofxxx
which is same name as a property name. - This syntax can be used only as a declaration or a function argument.
- A function argument example is
function func({ xxx, yyy }) { /* ... */ }
.
- In this case it assigns
- Improved
.each
for Object. The callback will receive[key, value]
pair as array.{ x: 100, y: 200, z: 300 }.each { &([key, value]) System.println([key, value]); };
- Some bug fixes and improvements.
- Supported a numbered parameter of a function argument.
- Updated
- Supported a Parser Combinator Library named as
Parsek
. - Some bug fixes and improvements.
- Supported a Parser Combinator Library named as
- Updated
- Changed disassembler for x64.
- In formatting like
"%-20s" % v
it is correctly worked with UTF8 string with correct width. - Supported some of
Math
functions in native. - Supported some of string operations in native.
- Supported some of binary operations in native.
- Supported some of array operations in native.
- Supported switch-case only with integer label in native.
- Kinx As A Library, see
examples/c/runkinx.c
for example. - Supported underline by escape sequence.
- Supported
__FILE__
,__LINE__
,__FUNC__
. - Supported Environment Variable via
$env
variable. - Supported a JIT library for 64-bit integer and 64-bit floating point.
- Supported
libkinx.h
and a library file ofkx.lib
on Windows orlibkx.a
on Linux. - Supported the option of
--version
to show the detail of the version. - Supported the option of
-c
for compiling only to check the syntax. - Supported the option of
-q
for quiet mode. - Some bug fixes and improvements.
- Updated
- Supported a long option by
System.getopt()
. - Supported UTF8 utilities.
String.utf8Length()
to get a length of a utf8 string.String.splitUtf8String()
to split a string as an array of a utf8 string.String.splitUtf8Object()
to split a string as an array of a utf8 information object.String.eastAsianWidth()
to get a width of a utf8 character.String.eastAsianWidthType()
to get a type character of width of a utf8 character.
- Supported REPL (Read-Eval-Print Loop) with updated below.
- Auto-complete by
[TAB]
key. - Moving by word with Ctrl + arrow left/right.
- Auto-complete by
- Some bug fixes and improvements.
- Supported a long option by
- Updated
- Updated some of native code output.
Supported a dot style of string literal like..abc
which means"abc"
- Obsoleted this feature at 0.21.0.
- Supported Process library.
- Supported
System.getopt()
. - Supported Escape Sequence with
\e
,\033
, or\x1b
even with Windows. - Supported a part of REPL (Read-Eval-Print Loop), but it is not a full version.
- Some bug fixes and improvements.
- Updated
- Bug fixes for operator override.
<<
,>>
... Making it parse correctly.
- Added
toString()
method to the class Boolean. - Some runtime optimaizations for function call.
- Replaced Bison of a parser generator by Kmyacc.
- Supported a DateTime class.
- Supported a CSV/TSV class.
- Supported some optimizations.
- Supported
System.gc()
to perform GC forcely. - Supported a Database class for easier to use than a SQLite class.
- Some bug fixes and improvements.
- Bug fixes for operator override.
Updates from v0.5.2.
- Updated
- Fixed a bug of
String#next
. - Supported Net.Http class.
- Supported the operator '~' for bitwise not.
- Supported operator override for class instance as below.
==
,!=
,>
,>=
,<
,<=
,<=>
,<<
,>>
,+
,-
,*
,/
,%
,[]
,()
.
- Supported multi-threading as
Isolate
withMutex
andCondition
. - Supported
Enumerable#sum
&Range#sum
. - Fixed to parse a big integer from hex.
- Function Object is always evaluated as
false
. Only.isFunction
property returnstrue
. - Append alias methods for Array/Enumerable below.
Array#collect
forArray#map
.Array#collectConcat
forArray#flatMap
.Array#inject
forArray#reduce
.Array#select
,Array#findAll
forArray#filter
.
- Some bug fixes and improvements.
- Fixed a bug of
Updates from v0.4.1.
- Updated
- Updated OpenSSL library path.
- Changed a function name to be treated as a constant.
- Supported some binary special methods.
- Applying a
toString
method automatically when applying an object toSystem.print/println
,Array#join
, andArray#toString
. - Supported a spread operator for String like
<..."abc">
or[..."abc"]
. - Supported the option of
binary
with true/false forZip#extract
. - Supported applying a Range object to the index for String, Binary, and Array.
- Some bug fixes and improvements.
Updates from v0.3.1.
- Updated
- Supported Enumerable module.
- Supported Range object and the syntax of
n..m
andn...m
. - Supported
for-in
statement. - Updated a spread operator to use with any expressions.
- Supported some operators like
==
as a property name. - Supported a spread operator with declaration statement.
- Some bug fixes.
Updates from v0.2.0.
- Updated
- Combining ternary expressions.
- Updated Fiber.
- Supported Signal.
- Some bug fixes.
Updates from v0.1.0.
- Updated
- Supported Standard I/O.
$stdin
,$stdout
,$stderr
has same methods asFile
.- There are constant variables as
STDIN
,STDOUT
,STDERR
corresponding to$stdin
,$stdout
,$stderr
.
- Added or modified
File
instance methods.- Supported
getch
,putch
,peek
.
- Supported
- Supported Standard I/O.
This is a first preview release.
- For Windows, extract
package_win64.zip
and put it where you want.- Setup the PATH for executable.
- For Linux, extract a source file and do
make
andsudo make install
.- The executable named as
kinx
is installed to/usr/bin
. - Some libraries are installed under
/usr/bin/kinxlib
- Setup the PATH for executable if you need.
- If you want to uninstall, remove above files by hand.
- The executable named as
You can write the program on the top level of source. Prepare the following file named as hello.kx
.
System.println("hello, world.");
Execute it as follows, and you will do it well if the PATH is correctly set.
$ kinx hello.kx
hello, world.