1. The glory of the 20th Icon Contest is yours for the taking!
    Dismiss Notice
  2. Fill your cup and take your pick among the maps best suited for this year's Hive Cup. The 6th Melee Mapping Contest Poll is up!
    Dismiss Notice
  3. Shoot to thrill, play to kill. Sate your hunger with the 33rd Modeling Contest!
    Dismiss Notice
  4. Do you hear boss music? It's the 17th Mini Mapping Contest!
    Dismiss Notice
  5. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Jass3?

Discussion in 'The Lab' started by Aniki, Aug 28, 2020.

  1. Aniki

    Aniki

    Joined:
    Nov 7, 2014
    Messages:
    550
    Resources:
    6
    Tools:
    1
    Maps:
    1
    Spells:
    1
    JASS:
    3
    Resources:
    6
    After dumping the strings from the game's executable (x86_64/Warcraft III.exe, version 1.31) one can find references to "jass3". From these strings it seems that Jass3 is very similar to vJass, having: libarries, modules, structs, interfaces, scopes, textmacros, delegates and operator overloading. I don't know if there's a way to tell the game to interpret the mapscript as Jass3 and not Jass2/Lua.

    These strings seem to be related to "jass3":
    Code (Text):

    out of dynamic memory in jass3_create_buffer()
    out of dynamic memory in jass3ensure_buffer_stack()
    out of dynamic memory in jass3_scan_buffer()
    out of dynamic memory in jass3_scan_bytes()
    bad buffer in jass3_scan_bytes()
    jass3set_lineno called with no buffer
    jass3set_column called with no buffer

    program
    library
    interface
    module
    scope
    textmacro
    runtextmacro
    return_
    if_
    loop
    exitwhen
    set
    keyword
    delegate
    implement
    literal_value
    variable_decl
    addr_of
    logical_not
    logical_and
    logical_or
    logical_less
    logical_less_eq
    logical_greater
    logical_greater_eq
    logical_eq
    logical_neq
    expr_dot_operator
    identifier
    arith_neg
    arith_add
    arith_sub
    arith_div
    arith_mul
    arith_mod
    expr_callable
    expr_indexable
    input_file
    <unk_op>
    Redundant declaration tag
    Syntax error
    LIBRARY_
    boolean
    code
    handle
    integer
    real
    string
    nothing
    null
    thistype
    __base_struct__
    onDestroy
    allocate
    deallocate
    getType
    typeid
    onInit
    type_name
    node
    type_name2
    node2
    operator ==
    operator
    operator <
    operator []=
    operator []
    initializer

    Function '%s' expects a return value
    Function expects a return value
    Void function cannot have a return value
    exitwhen cannot be used outside a loop/endloop block
    Attempted to write to a constant symbol '%s'
    '%s' did not receive the right number of arguments or the correct argument types!
    Operation not supported with the types '%s'
    Internal error
    : %s
    '%s' received an invalid array dimension!
    '%s' is not an array!
    '%s' is not a callable expression!
    Types mismatch expected '%s', given '%s'
    Invalid array size specified for '%s', expected a positive constant non-zero integer value
    Special interface method '%s' takes nothing and does not have a return type
    Scope '%s' with an initialization routine cannot be nested and should be declared in the global scope
    Cannot implement the non-module '%s'
    Access protection error: '%s' is not accessible
    Access protection error: '%s' cannot access '%s'
    Incompatible type extension: type '%s' cannot extend '%s'
    Type '%s' referred by '%s' was not found
    Left-hand side expression
    '%s' cannot be assigned to.
    Assignment to the array '%s' is not allowed. Assign to its elements instead.
    An array of the built-in type code is not allowed.
    Undeclared identifier '%s'
    'thistype' is not resolvable or applicable in this context
    Found cyclic type extension in '%s'
    Type name '%s' cannot be used because it conflicts with the built-in type name
    Method or member '%s' is reserved and should not be used
     (@%s:%d:%d)
    Identifier '%s' (%s) redefinition%s
    Divide by zero
    Unknown operator
    Modifier applied to %s '%s' is not applicable
    Invalid initializer function
    Missing initializer function
    report_error(): unknown error: %d
    %d:%d, semantic error: %s


    variant_t@jass3@@
    ast_node_t@jass3@@
    ast_expression_node_t@jass3@@
    ast_literal_value_node_t@jass3@@
    ast_categorized_visitor_t@jass3@@
    bcFunctionImpl@_ast_node_t@jass3@@PEBV12@@@
    bcFunctionObjectImpl@V<lambda_f8b481233b59003516c6d9456e5d6f21>@@_ast_node_t@jass3@@PEBV23@@@
    ast_node_with_list_t@jass3@@
    ast_program_node_t@jass3@@
    ast_input_file_node_t@jass3@@
    ast_raw_visitor_t@jass3@@
    find@?1??ast_find_node_if@jass3@@YAPEBVast_node_t@2@PEBV32@V?$functioast_node_t@jass3@@0@Z@blz@@@Z@
    ast_binary_expr_node_t@jass3@@
    ast_statement_with_expr_node_t@jass3@@
    ast_return_node_t@jass3@@
    sem_symbol_t@jass3@@
    sem_array_type_t@jass3@@
    sem_variable_t@jass3@@
    sem_function_t@jass3@@
    sem_op_function_t@jass3@@
    sem_scope_t@jass3@@
    sem_library_t@jass3@@
    sem_builtin_type_t@jass3@@
    sem_type_extension_t@jass3@@
    sem_struct_t@jass3@@
    bcFunctionImpl@H_NPEAVsem_symbol_t@jass3@@PEAV12@@@
    visit_all@?1??build_parenthood_map@semantics_t@jass3@@AEAA_NXZ@
    bcFunctionImpl@W4err_e@jass3@@PEAVast_node_t@2@PEBDPEAPEBV32@@@
    bcFunctionObjectImpl@V<lambda_39f89f59e6645064d7ff869c070862d3>@@H_sem_symbol_t@jass3@@PEAV23@@@
    bcFunctionObjectImpl@V<lambda_6f1b4b289d38de5192ddeec7494265b6>@@_ast_node_t@jass3@@PEBV23@@@
    bcFunctionObjectImpl@V<lambda_9720fb9dc307bd636f615cd372b2ee9a>@@_ast_node_t@jass3@@PEBV23@@@
    bcFunctionObjectImpl@V<lambda_b9c671a4e87d018072ecb273eaf1fcf5>@@_ast_node_t@jass3@@PEBV23@@@
    bcFunctionObjectImpl@V<lambda_e315285a34d9c2af5a863aad817e0753>@@_ast_node_t@jass3@@PEBV23@@@
    bcFunctionObjectImpl@V<lambda_0909c2d72968773518212ed598eb81fa>@@_ast_node_t@jass3@@PEBV23@@@
    bcFunctionObjectImpl@V<lambda_a0caa47d8e5f17f39f3acb1f1f539dab>@@W4err_e@jass3@@PEAVast_node_t@3@PEBDPEAPEBV43@@@
    ast_unary_expr_node_t@jass3@@
    ast_addr_of_node_t@jass3@@
    ast_logical_not_node_t@jass3@@
    ast_logical_and_node_t@jass3@@
    ast_logical_or_node_t@jass3@@
    ast_arith_neg_node_t@jass3@@
    ast_arith_add_node_t@jass3@@
    ast_arith_sub_node_t@jass3@@
    ast_arith_mul_node_t@jass3@@
    ast_arith_div_node_t@jass3@@
    ast_arith_mod_node_t@jass3@@
    ast_logical_less_node_t@jass3@@
    ast_logical_less_eq_node_t@jass3@@
    ast_logical_greater_node_t@jass3@@
    ast_logical_greater_eq_node_t@jass3@@
    ast_logical_equals_node_t@jass3@@
    ast_dot_operator_node_t@jass3@@
    ast_logical_not_equals_node_t@jass3@@
    ast_identifier_node_t@jass3@@
    ast_callable_expr_node_t@jass3@@
    ast_indexable_expr_node_t@jass3@@
    ast_globals_node_t@jass3@@
    ast_library_node_t@jass3@@
    ast_scope_node_t@jass3@@
    ast_delegate_node_t@jass3@@
    ast_implement_node_t@jass3@@
    ast_usercode_node_t@jass3@@
    ast_textmacro_node_t@jass3@@
    ast_runtextmacro_node_t@jass3@@
    ast_alias_node_t@jass3@@
    ast_keyword_node_t@jass3@@
    ast_hook_node_t@jass3@@
    ast_type_node_t@jass3@@
    ast_structure_node_t@jass3@@
    ast_variable_decl_node_t@jass3@@
    ast_function_node_t@jass3@@
    ast_if_node_t@jass3@@
    ast_block_end_node_t@jass3@@
    ast_loop_node_t@jass3@@
    ast_exitwhen_node_t@jass3@@
    ast_call_node_t@jass3@@
    ast_set_node_t@jass3@@
     
     
  2. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,346
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    That's almost certainly just their codename for "vJass". It doesn't have any features that vJass itself doesn't already include.
     
  3. _Guhun_

    _Guhun_

    Joined:
    Jun 12, 2010
    Messages:
    390
    Resources:
    7
    Spells:
    6
    Tutorials:
    1
    Resources:
    7
    People have found references to jass3 before by looking through the executable, but this is probably the most detailed information about it out there. Seeing what it contains, JASS3 almost seems like a it'll be a vJASS parser. But it's quite possible that it's a new language and they just want it to be as similar to jass2/vjass as possible, to make porting old maps easier. Though I really wonder what the point of going through all this effort is, since Lua can now be used (and so can many other languages, via transpilers).
     
  4. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,346
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    Imagine if JASS and Lua could coexist in the same map, with JASS compiling into Lua when the map is saved or loaded.
     
  5. _Guhun_

    _Guhun_

    Joined:
    Jun 12, 2010
    Messages:
    390
    Resources:
    7
    Spells:
    6
    Tutorials:
    1
    Resources:
    7
    A vJASS to Lua transpiler would definitely be interesting... they already had a JASS one in the Reforged BETA, so maybe that may be what jass3 is?
     
  6. Retera

    Retera

    Tool Reviewer

    Joined:
    Apr 19, 2008
    Messages:
    1,011
    Resources:
    27
    Models:
    18
    Tools:
    2
    Maps:
    6
    Reforged HD Models:
    1
    Resources:
    27
    I really can't imagine this engine will see future patches to bring to light unused features. There is not that kind of business plan with Reforged. They did not open up Microtransactions to sell some of the skins that the game *looks like* they intended to sell. As a user, you could not help financially support Reforged if you wanted to.

    I do not think these constructs, if they existed unused in the game, will ever become used.