- 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
$pwdfor getting a current directory. - #272: Supported a binary mode in HTTP.
- #273: Supported
read/writeinFile. - #290: Supported
chmodinFile. - #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
Arrayitself. - 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
constdeclaration for the same variable. - #284: Fixed a segmentation fault problem on Linux.
- #288: Incorrect message is displayed when
File.openfailed. - #289:
File.setFiledatedoes not work correctly. - #293: Fixed a problem of a stack overflow with
=~or!~. - #301: Fixed a prblem of using
ctxafter 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 |> bwhich is just same asb(a). - Supported a pipeline operator of
a <| bwhich is just same asa(b). - Supported a function composition operator of
a +> bwhich is like{ => b(a(_1)) }. - Supported a function composition operator of
a <+ bwhich 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 writestrto 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
.abcwhich means"abc".- This is changed to another feature.
- Newly
.abcis a function object which means{ => _1.abc.isFunction ? _1.abc() : _1.abc }. - And also
.is***like.isFunctionto 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
whenclause incase-when.
- As a call back method for methods of Array such as
- Updated
case-whenfeatures.- Supported
^as a pin operator. - Supported an lvalue of array with index at
whencondition. - Supported
|operator for multiple conditions called as alternative pattern atwhencondition. - Supported putting a function object to check the result by function call at
whencondition. - Changed to make it error when the length of array is mismatched.
_means to ignore binding a value atwhencondition.
- Supported
- Introduced a
whenlabel inswitchstatement.- This can be used a substitute of a
caselabel, and it will dobreakautomatically by default. - When specifying
fallthrough;at the last statement of awhenclause, it will be fallthrough. - The label instead of
default:iselse:which will dobreakautomatically at the end of statements. - The
fallthroughkeyword in acaseis meaningless and it will be ignored. - You can mix a
caselabel and awhenlabel, but it is not recommended. switch-whenis a statement and it is same asswitch-caseexcept a behavior ofbreakandfallthrough.
- 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):intfunction funcname(args):intpublic funcname(args):intprivate 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-whenexpression 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 = 10ifm == 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
builddirectory and moved files needed at building to thebuilddirectory.
- 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
$kinxpathfor Kinx installation path. - Instead,
$exepathmeans 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
Pathenvironment 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
catchwithout specifying an exception object.- This is like
try { ... } catch { ... }.
- This is like
- Support a cast syntax in native with an
askeyword.- Use
asafter 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 Typesettinglibrary.- 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-jsonto 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#splitto support UTF-8. - Supported
Parsek#noneOf. - Added a script name into an argument list with
--execoption. - Supported a
$envvariable without a property to get all environment variables. - Improved
String#eachto 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
_1to_9, and_1is 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
.maplike[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
100to the variable ofxxxwhich 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
.eachfor 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" % vit is correctly worked with UTF8 string with correct width. - Supported some of
Mathfunctions 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.cfor example. - Supported underline by escape sequence.
- Supported
__FILE__,__LINE__,__FUNC__. - Supported Environment Variable via
$envvariable. - Supported a JIT library for 64-bit integer and 64-bit floating point.
- Supported
libkinx.hand a library file ofkx.libon Windows orlibkx.aon Linux. - Supported the option of
--versionto show the detail of the version. - Supported the option of
-cfor compiling only to check the syntax. - Supported the option of
-qfor 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..abcwhich means"abc"- Obsoleted this feature at 0.21.0.
- Supported Process library.
- Supported
System.getopt(). - Supported Escape Sequence with
\e,\033, or\x1beven 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
IsolatewithMutexandCondition. - Supported
Enumerable#sum&Range#sum. - Fixed to parse a big integer from hex.
- Function Object is always evaluated as
false. Only.isFunctionproperty returnstrue. - Append alias methods for Array/Enumerable below.
Array#collectforArray#map.Array#collectConcatforArray#flatMap.Array#injectforArray#reduce.Array#select,Array#findAllforArray#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
toStringmethod 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
binarywith 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..mandn...m. - Supported
for-instatement. - 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,$stderrhas same methods asFile.- There are constant variables as
STDIN,STDOUT,STDERRcorresponding to$stdin,$stdout,$stderr.
- Added or modified
Fileinstance methods.- Supported
getch,putch,peek.
- Supported
- Supported Standard I/O.
This is a first preview release.
- For Windows, extract
package_win64.zipand put it where you want.- Setup the PATH for executable.
- For Linux, extract a source file and do
makeandsudo make install.- The executable named as
kinxis 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.
