0.17.0

25.07.2021

New:New: Sys.getHostName
New:Sequence.select now accept 'nil' as placeholder
New:More functions for "ByteArray"
New:ByteArray improved and extended
New:New: Table.deleteRows ... to delete row(s)
New:New: A_Sequence.equals, A_Sequence.equalsLazy
New:3 stages for Object to String: toString, toStringExt, toStringFull
New:New sequence function: isFilled
New:New shortcut for "Set": []?
New:List.insert: arguments changed, New: Str.insert
New:New: Int.toBin Str.parseBin
New:Input.readBool
New:"Input" with alternate sources
New:Allowed again: func.execStream
New:New classic control object: Each
New:New: PrintErr, EchoErr, Object.printErr, Object.echoErr
New:New classic 'Loop' object
New:Single 'open argument' for types and functions
New:New object with one open argument
New:List of supporters now with comments
New:Line compination also with '(' at the end
New:Parser switch ">clearFlow" to forbid Return, Break and Next
New:New: ConstLet
New:Blocked Type names
New:String with modifier: "" Str, ""? Literal-Str, ""?? RegEx, ""¿ RegEx
New:All 'Immutable' with equalsLazy
New:New functions for 'Dir'
New:New shortcut notation for types:
New:New type "Type"
New:Table.rotate(left/right), .getTitles, .firstRowTitles
New:Map.toTable
New:Output-Hook for IDE
New:App: flag to prevent hard exit
New:Also accepted alias for Nil: 'null', 'NULL'
New:Accept numbers with exponent E
New:Bin,Hex,Oct now with underlines
New:New: ByteArray
New:New: Str.toBytes
New:Parser switch argument with '='
New:New: Atomic.format
New:Event-System improved, New: Cycle, app.keep
New:Type definition with "extends"
New:New: Alternativ function names
New:ShutdownHook for the App: app::@exit
New:New Type: Set
New:New Classic-Object: Which
New:Date and DateTime with getDayOfWeek
New:New: Select & Update for Chars (Str, Char)
New:New: Object.assert, .assertIf, .assertIs
New:Integer numbers with underline, parse speed improved
New:Assign a object calculated to the right with: +=> -=> *=> /=> %=>
New:Assign calculated value to the right with +=>
New:New: Object.tryUse
New:New: Atomic.breakAtNot, .breakIfNot
New:New classic objects: Print, Echo
New:Select & Update for all sequences
New:New: List.select, List.update, Shortcut: {}
New:TreeBlock and lazy TreeBlock
New:New: Tableblock with ||||
Changed:Rework of event handler definition: consts allowed, vars must be spec.
Changed:Parsetime-switches ">lib" and ">import" removed.
Changed:List: Rework of mathematics
Changed:Some aliases removed from "List"
Changed:Removed: DefaultEvent
Changed:Removed: .isFilled
Changed:Group information of errors corrected
Changed:Removed: open arguments for normal functions
Changed:Forbid open argument (without brackets) for arguments
Changed:Magic constants now start with two underline chars "__"
Changed:Prevent output of "NonAtomic"
Changed:Rework of Java-Imports (Direct, Package)
Changed:Renamed: "org.jmo_lang.dev" to "org.jmo_lang.api"
Changed:New helper class: JMo4Java
Changed:Date & Time: "format" renamed to "style"
Changed:SysCmd reorganized: "" = live, ""? = pipe, ""?? = buffer
Changed:Return value of App.exec changed from toDebug to toString
Changed:"fromUnicode" renamed to "parseUnicode"
Changed:Removed from basic sequences: getSize, getLen! Ok are: getLength, len
Changed:"Switch" and case's removed in this version
Changed:Control function now can export a loop
Changed:Writing stdOut also to output file
Changed:Now a open argument is only allowed with 1 argument and no block!
Changed:Strict open argument
Changed:Very strict handling of whitespace and tab between name and args-bracket
Changed:Invalid for instantiation: True,False,Nil,Null
Changed:Changed: =~ to ~= and =~> to ~=>
Changed:No block allowed for '.mem'
Changed:"Object.do" removed, BlockExecArgs removed (.each, .pass)
Changed:"Replace Type-Alias" removed
Changed:'app.end' removed, only valid is 'app.exit'
Changed:'loop.end' removed, valid is only 'loop.break'
Changed:func.return is okay, func.end and func<< removed
Changed:Shortcuts for "loop" and Handle_Loop removed
Changed:HintManager removed, CLI exported, Dependencies reduced
Changed:API for external JM°-Objects reworked to use Interfaces
Changed:Redirect output
Changed:'Range' reworked
Changed:">clearFlow" renamed to ">cleanFlow"
Changed:Output of JMoError's with StackTrace
Changed:Either output to standard-out or to file
Changed:Next,Break,Return integrated/reworked
Changed:Don't read build number if it's not really necessary.
Changed:Access to all Java-Objects only through Prefix "Java_" or Type "Java"
Changed:Definition of Type/Function with control ability changed from {} to ()?
Changed:Definition of FuncLet with ::
Changed:loop.nr renamed to loop.lap
Changed:Format of error messages changed
Changed:Rework for handling regular expressions
Changed:Object.tryUse with 'each'
Changed:DateTimes moved to new abstract type "Immutable"
Changed:Rework for Path, File, Dir
Changed:Path-Shortcuts removed <> <[]>, tests updated
Changed:License switched to LGPL and updated to 2021
Changed:Parsing of Bin, Hex, Oct now results in type "Long"
Changed:List can now be read only
Changed:Catch errors in "hot execution" with Try
Changed:Reintegrated: _ARGS
Changed:Default implementation of toString and toDebug in EventObject
Changed:Number.format renamed to Number.style
Changed:"Namespace" transformed to "Prefix"
Changed:Timer is deprecated
Changed:Own Thread counter added, "sleep" replaced with "wait/notify"
Changed:Type definition changed to ::MyType ^ BaseType = stdFunc
Changed:CLI improved, now with full cursor control
Changed:AutoPass removed, Strict levels balanced
Changed:Parser-Levels balanced
Changed:".while" & ".repeat" moved from Atomic & VarLet to Object
Changed:".handle" renamed to ".toVarLet"
Bugfix:Bugfix: Terminate "Loop" on "Exit"
Bugfix:Bugfix: Unclosed Get

0.16.0

06.12.2020

New:New functions for Vars: =~ , <<=, >>=, =<<, =>>, =!
New:Str with deep-get and more Sequence-Functions
New:Namespace for Java-Objects: "Java_"
New:Object.isNotNil
New:List.begin, List.append
New:app = , loop =
New:Auto-set: .title("Foo") --> .setTitle("Foo")
New:Object.typeUse
New:To catch and wrap a lot of CodeErrors: >lazyErrors
New:JMo-argument "-e, --exec" to directly exec a command
New:New: RandomAccessFile
New:Remove Dec precision and limitation: >openDec
Changed:Some MagicConst moved to MagicVar: _THIS -> this, _IT -> it, _LOOP -> loop, _FUNC -> func, _APP -> app, _JMO -> jmo, ...
Changed:?"" to ""?
Changed:Int: and,or,xor renamed to bitAnd,bitOr,bitXor
Changed:All Try-Functions merged into one single ".try"-Function
Changed:Funclets now can also use a stream
Changed:A loop now returns the last used value
Changed:Automaticaly wrapping a Var to VarLet
Changed:".sleep" moved from "_THIS" to "Sys"
Changed:Unified: Converting char to Dec/Float and reverse
Changed:"Next" and "Break" integrated again.
Changed:Internal Terminate-Flag to stop a running App immediately
Changed:Normalizing decimal numbers because of fractals
Changed:?() removed
Bugfix:Great fix for Namespaces
Bugfix:Prevent number overflows
Bugfix:A lot of small and greater fixes

0.15.0

26.10.2020

New:Object.which
New:Hot-Execution
New:Overwriting of .toStr
New:New ParseTimeSwitch: >unsafeHotCode
New:Temporary VarLet with: Object.handle
New:Char.toUnicode, Str.fromUnicode
New:Combine also lines when '[' at the end
New:"Sys" to get system information
New:Namespaces
New:New: Str.columns, Str.table
New:"Tree"-Type
New:Parsing Tree-Block with >>>> and <<<<
Changed:Deep-Functions removed, functionality integrated in Get,Pull,Set,Put
Changed:Shortcuts for _EACH: $$, €
Changed:List changed: from position --> .start, to position --> .end
Changed:´´ is shortcut for "Cmd.pipe", ´´? is shortcut for "Cmd.live"
Changed:Shortcut for Get & Set also with 0 arguments possible
Changed:Auto-Property improved, it's only set when a '=' follows

0.14.2

29.09.2020

Changed:Error-Output improved
Changed:More and better tests
Bugfix:Prevent definition of already defined Vars/Consts

0.14.1

28.09.2020

Changed:Start-Procedure changed, Main-Class is now org.jmo-lang.JMo
Changed:Enhanced quote/unquote with Unicode chars
Bugfix:Some fixes for CLI

0.14.0

24.09.2020

New:Object.tryCatch, .tryBlock, .tryBlockCatch, the same for Try
New:Object.ifNil, .ifNotNil
New:Atomic.switch
New:New Functions for Str: .filter, .map, .sort, .reduce, .amount
New:Object.is, Object.isNot
New:Predefined Type for variable/const: Int i = 4
New:Floor-Division: /~, .floorDiv, .divFloor
New:Atomic: .breakAt, .breakIs, .breakIf
New:Auto-Pass after every function
New:Private functions: _private
New:VarArgs for Functions and Types (v...)
New:Else now with argument as elseif/elif: ".else(Bool b)"
New:Object.debug()
New:Sequence.deep... Get,Pull,Set,Put
New:Nil multiply, to get a empty List
New:Automatic counter for loops added: _LOOP.nr
New:Auto-String-Get/Set now with ':'
New:New functions for VarLet: .set, .while, .repeat
New:Object.nilUse()
New:JMo-Flags: -t,--test
New:Length-Function for all atomic types
New:Atomic.keyValue, Atomic -> Object = KeyValue
New:For-Type (C/Java-Style)
New:Atomic.while, Atomic.repeat
New:Column names for Table
New:VarArgs can be used with a VarLet of a List
New:IntNumber.for(Bool test, Object calc)
New:Classic command: IfNot
New:Error.getText
New:Now there are 3 Code-Styles: Classic, Stream, Slim
New:Many new functions for different types
Changed:All control-functions now with: _EACH, FuncLet, VarLet + _EACH
Changed:Function/Type-Definition: ":foo()%" changed to "::foo{}"
Changed:Functions: Individual initialization of parameters
Changed:§exit --> _APP.exit
Changed:MC_CONTROL removed
Changed:Changed shortcut-chars: _EACH = €, _LOOP = & or ±, _FUNC = §
Changed:Mathematic negative operator changed from '~' to '!'
Changed:Object.go renamed to .pass
Changed:ifGo --> passIf, isGo --> passIs (also for "not")
Changed:Removed: AutoBlockFunction after Function
Changed:Parser-Levels changed (level 0-4): Open, Low, Medium, High, Insane
Changed:Allow shortcut of variables
Changed:_BLOCK and _STREAM moved to _FUNC.push(x): They are only combined accessable
Changed:Standard-output of Date and Time changed to "YYYY.MM.DD HH:MM:SS"
Changed:Now accepted: nil,Nil,NIL / true, True, TRUE / false, False, FALSE
Changed:Loops: .continue renamed to .next, but .continue is a alias
Changed:Changed sequence for definitions: "::"
Changed:"For" renamed to "Count"
Changed:equally,equals,same | diffly,differs,other | ==~ == === | !=~ != !==
Changed:VarLet for shortcuts like {} changed to: .mem(:x) and => x
Changed:Now, _IT can be used like a normal variable. Also with %=++
Changed:Changed: Initialisation of Control-Objects and -Functions
Changed:Error-Output and messages improved
Changed:Strict-Levels balanced
Bugfix:Really a lot of fixes

0.13.0

23.05.2020

New:Object.proc( VarLet, Object ) / Object.tee( VarLet, Object )
New:List.adjust(IntNumber, Object)
Changed:Lines with leading '+' or '-' are no longer appended to the previous line.
Changed:Lazy String-Parsing (.toInt, .toDec, ...). Now nil will be returned.
Bugfix:Some fixes for Console-Output and imports

0.12.1

19.05.2020

New:Table.sort, .addRows, .combine, .addAll, .rotate, .reverse, .rows, .columns
Changed:Correct Charset for Windows-Console
Bugfix:Bugfix for Windows-Starter

0.12.0

16.05.2020

New:Functions to search first/last position in List and String
New:Table.get(x,y)
New:Number.format with tilde to ignore chars
New:Table(width, length, fill)
New:Table.getColumn
New:Atomic.toJava
New:Java-Imports, also with wildcard
New:Direct access to Java-Objects
New:Extra functions for variable assignment (=++, =--, **=, ...)
Changed:Bitwise shift,and,or,xor only for IntNumber
Changed:While.exec renamed to .each
Changed:"AutoBlock after Function" disabled by default
Changed:Range: Shortcut now uses .eachTo
Changed:Condition renamed to Use
Changed:AutoBlockFunction for Group: .get
Changed:Repeat.exec renamed to .each
Changed:Str.get and .change with negative position
Changed:CLI improved. Now it works also without stty
Changed:Str.startsWith and .endsWith now can used with more parameters
Changed:Priority of atomic types implemented and tested
Changed:Brackets get/set now can have more than one argument. Example: [3,5]
Bugfix:Some fixes for: _THIS, Function definition, Numbers

0.11.0

30.04.2020

Info:This is a huge update with really a lot of changes and improvements!
New:New DateTimeBase for Date, Time, DateTime
New:Default-Function for self defined types
New:Functions now can process block and stream individually (_BLOCK, _STREAM)
New:Now you can write own Control-Objects
New:Sandbox for self-created Java-Objects
New:FunctionMap
New:Number: Increment/Decrement with argument
New:New/Changed Str-functions: from, to, fromFirst/fromLast, to..., after..., before...
New:New is-functions for Char (isNumber, isCaseUp, ...)
New:Convert of Chars: toChar = parsing, .ord / .chr = Unicode/ASC II
New:MagicConst-Positions (_TOP, _LEFT, _TOP_LEFT, ...)
New:Property-system for .get and .set (.prop --> .getProp / .prop = x --> .setProp(x))
New:Makro with FuncLets and arguments
New:FuncLet with argument
New:Autoblock-Function for Bool (.if)
New:Switch: So all case-functions moved from Object to Switch
New:Better handling of Java-Objects
New:Bool.use (clear alternative for Condition)
Changed:Logical gates: and = &&, or = ||, xor = ^^, nand = !&&, nor = !||, xnor = !^^
Changed:Map: Objects renamed to "Values"
Changed:Clear break for logical "and" / "or"
Changed:Equals (==) and differs (!=, <>) moved to Object
Changed:List.sort improved
Changed:Str and Char now inheriting from Chars
Changed:File-Handling much improved: FileSys, PathList, Path, File, Dir
Changed:Many improvements for Date, Time, DateTime, also +/- now can be used
Changed:Object.toString removed
Changed:New system for parsing a Script.
Changed:Better Exception-Handling
Changed:CmdResult replaced with FunctionMap
Changed:Result of Str.cmd is now equal to the use of Cmd
Changed:Handling of shellcommands changed and improved
Changed:Switch-Cases improved, caseIs and caseIf now returns the last Object
Changed:"Control" changed to Magic-Constant "_CONTROL"
Changed:Handling of comments improved
Changed:Multicall now updates a var
Changed:_ITS changed to _CUR
Bugfix:Really a lot of bugs fixed!

0.10.1

18.01.2020

New:UTF8-Chars in Char and Str with \uXXXX
Changed:Output-order of errors changed
Changed:Now the raw name of a variable is checked, if it is already in use
Bugfix:A lot of fixes

0.10.0

11.01.2020

New:Functional programming with FuncLet's
New:List.reduce, List.map, List.sort, List.filter
New:List.format
New:List.eachVertical
New:New MagicConst: _PI, _E
Changed:For now a Range doesn't unfold automatically in a List! Use List.unfold
Changed:Corrected: Dec.toInt
Bugfix:Some fixes

0.9.0

31.12.2019

New:New unitary concept for the processing of blocks and streams.
New:Better handling of System-Commands (.exec, .quiet, .forget)
New:Errors: For full output use .show
New:Auto-Block-Function for Str: .each
New:Auto-Block-Function for IntNumer: .timesUp
New:If a function clearly returns a object with Auto-Block-Function, you can use it
New:Code-Style-Levels balanced: open, strict, verystrict, insane
New:ParseError for code-errors at parse-time. CodeError is for run-time
New:Include other files with: >Include("file.jmo")
New:New Save-Mode (used for Webstart)
New:Direct VarLet for Shortcuts: {1,3}:a ?{w}:b ?(false, 'a', 'b'):c
New:List.swap
Changed:.do executes the auto-block-function of the current object, if it has one
Changed:.go takes the current object and executes with it the block and stream
Bugfix:Many many fixes!

0.8.4

02.12.2019

New:Every function that results clearly a object with auto-block, now can have a block
New:Map.each --> MapItem
New:Some new functions for Table
Changed:More constructors for "Time"
Changed:Functions that return a List can have an Block
Bugfix:Different fixes

0.8.3

24.11.2019

New:List.store
New:"For" now can be used with a "Range"
New:File.each
New:All atomic decimal types now are a parent of DecNumber
New:toStr for all objects
Changed:Nil is an atomic object
Changed:Better handling of incrementing variables
Changed:Improved rounding to type of variable
Changed:Improved documentation
Changed:Better block-checking
Changed:§< is now a alias to _FUNC.return(), without argument!
Changed:§= is now a alias to _FUNC.return(Object o), with argument!
Changed:Better argument-check for objects
Bugfix:Some small bugs fixed

0.8.2

07.11.2019

New:Byte,Short,Int,Long are now type of IntNumber
New:Nil is now atomic
New:Not typesafe vars now can end with ¿ or ??
New:_LOOP now works
New:Str.begin
New:New Objects: Repeat, Try, Error, Time, DateTime
New:Errors are now sorted in groups: Code, Exec, Ext, Custom
Changed:Improved documentation
Bugfix:A lot of small bugs fixed

0.8.1

28.10.2019

New:Parse-Time-Commands now starts with a leading '>'
New:>strictBlocks - Forbids Auto-Block and .do
New:>strictConsts - Forbids ° % $ $$
New:>strictObjects - Forbids shortcuts like () [] {} <> ?() and so on
New:>strictFunctions - Forbids =+-*/&|^ and so on
New:Improved Java-Interoperability
New:Better output of strings in lists
New:Switches: case, caseIs, caseIf
New:.if / .is
New:.go, .ifGo, .ifNotGo, .isGo, .isNotGo
New:"go" is now the command to execute block and stream. "do" executes the object with Auto-Block
Changed:Rewrite handling of Parse-Time-Commands.
Bugfix:Using Var in Type-Constructor
Bugfix:Some small bugs fixed.

0.8.0

23.10.2019

New:{} now is a Shortcut to For().each
New:?{} now is a Shortcut to While().do
New:New Types: While, If
New:Str.cmd
Changed:Counter renamed to For
Changed:Rewrite of Loop-System
Changed:Clearer Object-Initialization
Changed:Rewrite of handling ranges
Bugfix:Fixed a lot of bugs

0.7.5

16.10.2019

New:Str.fill to format Stings
New:_JMO.version
New:Return-Type "Same" for functions now works
New:List.clear
Changed:Type-unsafe Vars now ends with a ¿, nillable ends with ?
Changed:§<< removed
Changed:Documentation improved
Bugfix:Handling empty functions
Bugfix:Some little fixes

0.7.4

07.10.2019

New:List.insert
New:QuickSort works!
Bugfix:Major bugfix at handling instances

0.7.3

02.10.2019

New:Values from ".each" and ".times" can passed directly to an variable: Example: 3.times(:a)
Changed:Group: Now it makes a difference whether you call it with "()" or with "Group"
Changed:Condition: Now it makes a difference whether you call it with "?()" or with "Condition"
Changed:Assign a value to a variable with "mem", now needs a VarLet. Example: 5.mem(:a); a.print
Bugfix:Some fixes for the CLI

0.7.2

26.09.2019

New:New List-Function "concat" with alias ++
Changed:Complete Code-Review to make it OpenSource

0.7.1

New:Exit the Application with: _APP.exit or §exit
New:List.filter with _EACH or $$; Example: [3,9,7,2].filter($$ < 5).print; [3,9,7,2].filter(_EACH < 5).print
New:Cool List-Functions for cutting: left, right, cut, area, from, to
New:New Atomic Types: Byte, Short, Long, Float
Changed:Major update at storing and handling variables.
Bugfix:Important fixes for the Function-Multi-Call-System
Bugfix:Different fixes and improvements

0.6.38

New:Condition works with: Condition(Bool cond, Object then, Object else) ... or with: ?(Bool cond, Object then, Object else)
New:Variables ending with ?? now are Type-unsafe and nillable
Changed:Raw Objects, without Auto-Block-Function couldn't have Blocks anymore.

 

Sponsor