Jump to content

Milyardo

Member
  • Content Count

    30
  • Joined

  • Last visited

  • Medals

  • Medals

Everything posted by Milyardo

  1. Milyardo

    Arma Geography

    Bystrica and Bukovina aren't fictional, they're real districts/provinces of the Czech Republic.
  2. You might want to look into a few more English lessons before you keep making accusations like these. That part means they have to make an offer for your entire mod, and not parts of it.
  3. That isn't what that means at all. It just means once you submit it to the contest you can't unsubmit it. Which makes sense because BI is probably going to tweet/blog/make press relases about the the mods in the contest and include demos, download links, videos, screenshots, etc of the mod, be it images or videos made by the author, or by BI themselves. If that still doesn't get you take take off your tin foil hate there's this: iTL;DR they can't money off your mod without an agreement.
  4. What does it matter to you what someone wants to do with their project? It's not yours and you have no say what they do with it. It's not like mods with commercial goals don't already exist. Once again, helping someone make something doesn't mean you're entitled to their work; you have a disturbed notion of copyright assignment and derivative work. Also, for the second time, no ones going to "hunt" you, if someone uses someone else's work the project gets disqualified and no one gets any money. What part of it's against the rules do you not understand?
  5. You can't assert copyright over someone else's work because you taught them how to make it, nor can you assert copyright over configuration files. The contest rules forbid this anyways, and it a moot point.
  6. Milyardo

    JavaScript for ARMA

    (_something + " = null;") call JS_fnc_exec _something = nil; In this particular example(it's a bad example for what we're trying to illustrate). The user explicitly created a global variable, so it should be up to them to manage it. Detecting user explicit globals would be a fairly advanced feature however and beyond the scope of what I was describing. Returning our earlier example: _result = "2+2" call JS_fnc_exec //At this step your framework should create a global variable in JavaScript, say "expr1" and return that name //It's important to note that your framework creates this reference, not SQF, it's up to you to manage it //and by extension SQF cannot leak references it doesn't create. "expr1" call JS_fnc_exec //returns 4 _result call JS_fnc_exec //also returns 4 _result = nil "expr1" call JS_fnc_exec //returns 4 call JS_fnc_reset //A new method to reset the v8 execution context or just collect the list of evaluated expressions your framework maintains //resetting the execution context is more desired because it allows us to undefine classes as well. "expr1" call JS_fnc_exec //returns undefined ---------- Post added at 01:27 PM ---------- Previous post was at 12:08 PM ---------- Reference binding and synchronization in general would be a nice to have.
  7. Milyardo

    JavaScript for ARMA

    You should reread my first post on this subject, your framework should create the the global reference, and return the name or identifier of that reference as in the second example I posted.
  8. Milyardo

    JavaScript for ARMA

    That not a leak even in the loosest definition of word. There is still a reference to the JavaScript object as a global, which can easily be evaluated through the list of global variables. SQF can't leak those values because SQF doesn't manage those references. That said you will have a ever growing list of evaluated expressions as global variables, this is a common in REPL environments and they usually come with some sort of command to reset the environment or session(in addition to evaluated expressions many other environm
  9. Milyardo

    JavaScript for ARMA

    Serialization would probably better than toString() however I still don't think it is correct. When passing values into a REPL assignments should be transitive, passing a value returned from the REPL should result in the same value. The following sequence should be valid regardless of object's type(instead of an object it could be String, or a Long, or an Array) when calling by value, or by reference(ignoring issues of precision). _expr1 = "new someObject" call JS_fnc_exec; _expr2 = "someObject" call JS_fnc_exec; //This should return true (expr1 + " === " + expr2) call JS_fnc_exec; Yes a named reference is exactly what I was refering to: _value = "new someObject" call JS_fnc_exec" //Should return "expr1"(or some other token of your choosing) as a value ("_value+".toString()") call JS_fnc_exec //Should invoke toSting() on expr1 I don't understand how that makes references useless at all. references don't work across different VMs or networks in any other language without some sort of framework to serialize objects and send them for you in any other language, even SQF. Serializing still wouldn't be correct, in the example above a new object would be constructed every time I pass a the value back to repl, instead of reusing the same object via a reference.
  10. Milyardo

    JavaScript for ARMA

    After playing around with this shortly, I don't think this is correct behavior. The framework should instead return a reference(assigning some sort of global named reference would probably be easiest, though I don't know if that would be best) that can be reused in subsequent calls to JS_fnc_exec in a manner similar to many other REPL implementations do for returned values. EDIT: Of course this raises the question on how one would manage reference to primatives as well, a how to manage a system for call by value/call by reference(EDIT: Sorry calling by reference/value is a non issue as that is evaluated by v8, instead a system would be needed for returning references or values).
  11. You mean as part of the command menu for player team leaders? Before this is implemented the whole radio/command system should be overhauled to be a little more dynamic that is it is now. A simple land command wouldn't be applicable to every unit and there should should be variations of it to respond to the current RoE and combat status. Even if the command system were programable outside the support/radio radio menu would be great as to allow the community to address the now dated static nature of the command menu.
  12. Milyardo

    JavaScript for ARMA

    I would suggest adding debug support as a todo. Perhaps even add the calling SQF function/line as content in the debug message. I don't have experience with v8 but I would first look into a implementation of a handler for v8::Debug::SetDebugMessageDispatchHandler() to do this.
  13. Milyardo

    ARMA 3 Alpha - Java Virtual Machine

    How did you hear that if there has been no news on the subject?
  14. Milyardo

    Arma 3 Linux Version ?

    From what I remember it was Svartalf from LGP about the port of the Armed Assault, not ArmA 2, I don't think if free was part of that discussion or not(I doubt it if Svartalf was trying to contract the port for LGP). http://www.phoronix.com/forums/showthread.php?t=17492 Those aren't the only issues, AFAIK, BattleEye regressed a few months ago when BattleEye started using KiUserExceptionDispatcher.
  15. You asked if SQF was interpreted or if it was run from bytecode. It's neither, it's compiled. I did state there was a intermediate representation in ArmA(raP) but incorrectly assumed it applied to SQF. However I was correct in stating that intermediate representation is not a bytecode language. I don't understand how this anything different from what I said, other than you seem to be implying that Zend and the classical PHP intrepreter are the same which they are not. EDIT Your question still doesn't make sense. What exactly is a 'bytecode layer'? You have machines and you have input. Bytecode is input into a virtual machine.
  16. JSON/BSON is an excellent analogy for raPification. The docmentation states "raP encoding applies to any humanly readable text file in OFP that contains class statements.". So while it is true that raPification doesn't apply to SQF files specifically, it is not because it contains SQF contains logic or satements. Both raP and BSON are forms of serialization. I don't understand exactly what you're asking. Yes, the Zend Engine is a virtual machine. The Zend Engine however is not the classical PHP interpreter which is not a virtual machine(more or less, like I said this has changed relatively recently). The article you linked specfically talks about features from Zend the classical php interpreter will borrow.
  17. That's a little uncalled for. If I'm really being uncessarily terse then by all means elaborate on the subject and answer his question. In my opinion there isn't a question here that can't be answered meaningfully. Those are the fundamental concepts to compilers and machine level instruction processing. ---------- Post added at 04:33 PM ---------- Previous post was at 03:54 PM ---------- I won't make the claim that I know anything about the implementation. However Armed Assault config and script files can be compiled to a binarised format. This documetation(https://community.bistudio.com/wiki/raP_%28ArmA%29) is pretty outdated, but is true that there is an intermediate representation of a SQF, however this intermediate representation doesn't qualify as a bytecode because this binarised format still requires parsing by a grammar to make a set of instructions free of semantics like object type and scope. JIT and low level optimizations like you're infering to come from using a virtual machine to interpret a bytecode language and not an inherit property of bytecode itself. A perfect counter-example would be PHP(though PHP's interperter is becoming more virtual machine like and this is less true than it has been in the past), it has a byte-code representation, however by using bytecode format files the only benefit you gain is during program loading since you skip the step of grammar parsing.
  18. Neither. What makes you think nothing is compiled? Thats what debug sybols are for. Bytecode VMs were introduced to address problems with application portability, not performance. I apologise for the terse responses, in my opinion your question illustrates that you don't have enough familiarity with formal grammar, language classification, and turing machines to make this a worthwhile disucssion.
  19. Most(1) of those Java Zero day exploits don't apply to context outside the Java Web Start plugin(2) and could not be exploited via applications running in the JVM via JNI. Regardless of how insecure you think Java is, Java is light years ahead of SQL/SQF in terms of performance, security, and correctness. Just out of curiosity, what do you propose as an alternative to Java? 1)One exploit in the past few months did abuse reflection APIs to execute methods outside the context of the security manager, that that bug is fixed. 2) As an aside, even though the problems had to be fixed from Java, these security problems are more the failing of web browser plugin architecture. There isn't a web browser plugin out there that doesn't have constant security problems, and the same problems have to fixed individually for each plugin. Web plugins as a whole suck and you should be worried about all plugins you have installed not just Java. Ironically, the very website you linked warns against this same thing in it's footnote. EDIT: For example, in classes in Java once loaded cannot be redefined. This exploit wouldn't exist in a JVM based environment.
  20. At the risk of sounding some what defensive, I never faulted BI for doing so. I just asked for how the information on how the API is going to be improved, and cited problems I saw with it and improvements I'd like see, information I think should be BI's statement on the future Java. I don't want to derail the thread into a topic about what Java APIs should and should not look like or if SQF does or does not suck(How is this even an argument? It plainly does.). However, for those who argue that the API in ToH was just fine, I'm interested in hearing evidence for those opinions what they sound fairly outlandish to me. I bought ToH just the other day to confirm that many of the problems I foresaw in the wiki with the API did exist. Even then, many other problems that became apparent even after just an few hours of usage, like with how all invocations to jcall are blocking SQF VM it's called on(Having to invoke a new SQF VM to invoke a new JVM so that jcall doesn't block on the main game engine thread is really really dumb). ---------- Post added at 09:37 PM ---------- Previous post was at 09:31 PM ---------- No it's not that's why it's being replaced. Good thing java annotation processing is a being rewritten in the next release of Scala to make this issue of mapping Java and Scala annotations less onerous. Also it's funny you mentioned this because I just did a brown bag presentation on this subject to our developers at my place of work, If you're interested and live in the Washington DC area, we will do a public version of this presentation of sometime next month. If not I'll PM you the presentation afterwards.
  21. Would you care to elaborate why the API is fine? Am I just supposed to accept that it is because you say it is?
  22. Milyardo

    ARMA 3 Alpha - Java Virtual Machine

    None of the features I suggested conflict with simple static methods in anyway. For example, wouldn't it be awesome to use a @ServerSide or @ClientSide annotation to have the security manager enforce execution of methods in thier respective context? What if you wanted a method that took in any Vehicle cloned it? How would you have the method return the proper type without generics? Generics would be necessary to model functional closures which are a (poorly implemented) feature in SQF. Besides there are a lot of constructs which should be managed by the RV engine instead of clients like threads and file system resources, or a concurrency model for the synchronization of game objects.
  23. I would also hope with more detail on support with Java comes with info on improvements to the API. The Java API in ToH looks like something a first year CS student would write. There are no generics, annotations, or proxies that can address cross cutting concerns like logging or setting up mission contexts. They expected you to cast parameters from Object, why bother with Java if you're going to ignore type safety and cast everything yourself. They don't use Futures or a thread executor and have commands implement Callable. Invocations of jcall were so slow I wouldn't be surprised if the JVM it self wasn't started up until it was jload was run. ---------- Post added at 05:13 AM ---------- Previous post was at 05:02 AM ---------- This is ignoring the fact you can't implement CUDA from class files, you need an alternative JVM to run java programs via CUDA and you won't be able to change the JVM implementation in ArmA. EDIT:Alternatively you could also be refering to calling CUDA with Java bindings, which the SecurityManager shouldn't allow you to do. And even if you could, what are you going to do, ship CUDA with your missions and escalate privileges somehow to talk the CUDA driver?
  24. Milyardo

    ARMA 3 Alpha - Java Virtual Machine

    What improvements are bring made to the Java implementation over the implementation seen in Take on Helicopters? I haven't worked with the implementation itself and my only source for how it works is the Java Scripting article on the wiki, but even with just a hello world example there are several glaring poor implementation decisions. import com.bistudio.JNIScripting.RVEngine; /** * Sample Java class * @author Bohemia Interactive */ public class Sample { /** * Show a hint passed to jCall. * @param args Method parameters */ public static Object showHint(Object[] args) { if (!(args[0] instanceof String)) return null; RVEngine.hint((String)args[0]); return null; } } So the first the thing that stands out to me is the complete lack of type safety. Sample doesn't extend any class or implement any particular interface, so there's no contract that Sample has to implement. In order to invoke showHint at runtime an expensive method probably iterates over classes in the class loader to find suitable methods(it would better to use Annotations here instead!) to put into a registry(I hope it's in a registry). Sample should probably extend instead be required to implement Callable. This would allow the enviroment to pass any class class implementing a callable function for use via jCall into a Future, making it possible for invocations to the JVM to asynchronous from SQF functions. Also Object shouldn't use as type parameter, define an interface for parameter types and use generics. ShowHint's prototype should look something more like public static <T extends FunctionParameter> T showHint(T... elements) Where T is a typed wrapper objects around SQF Primitives. Two particular features I'm looking forward to is a annotation driven library for sub-classing defining functionality of a class with extensive use of dynamic proxies that will allow mission developers to implement functionality in runtime.
  25. Hi, I am a dedicated BI, OFP, ArmA, and soon to be ArmA II fan. I am also a Linux user and regular visitor to Phoronix.com, a popular Linux 3D hardware and benchmarking site. Today, to my suprise and excitement I saw in this thread(http://www.phoronix.com/forums/showthread.php?t=17492) that Svartalf, a developer at Linux Game Publishing(LGP) listing ArmA as possibly a future canidate for a Linux Port by LGP with the quote "ARMA (Initial contact made...we'll see...)". I pleasently surprised that BI studios would consider a Linux port, and I would like to use this thread to give my support and thanks for giving Linux users like myself an opportunity to have a native version of any of your titles.
×