Page 1 of 2 1 2 LastLast
Results 1 to 10 of 12

Thread: A new age of code!?

  1. Default A new age of code!?

    Sourcemod 2 is on the way. This will result in major reprogramming of most mods to take advantage or new features and better performance:

    Why?

    The original SourcePawn compiler is extremely old. It was written by ITB CompuPhase in the 1990s and was originally based off a 1984 journal submission. It is nearly impossible to maintain. The binary format (".smx") is also archaic and inflexible, inhibiting almost any modern language feature or performance improvement.
    Tell me more!

    SourcePawn 2 runs plugins directly from source. That means you can drop ".sp" files in your plugins folder and they just work. Offline syntax and type checking is also supported. There are no plans to remove .smx support, however, .smx files will not be able to take advantage of SourcePawn 2.

    My goal is to support enough SourcePawn language features that 70% of plugins on the forums will work. From there I'll evaluate what features are remaining and whether they're worth adding. In this initial prototype, enough features are working to write very simple plugins, though #include does not work so you must declare natives manually.

    Here are the known language features I have not implemented, but will implement:
    • Const with non-refs
    • Array literals
    • Float comparison
    • Non-branching comparison
    • Global variables
    • Dynamic arrays
    • #include <>
    • Array slicing
    • Float comparisons
    • Booleans
    • The any: tag
    • Optional semicolons
    • Chained relational operators
    • Ternary expressions
    • Passing functions as variables/parameters
    • SortCustom2D, SortStrings
    • Very limited, specific uses of #if and #define


    Eventually, if/as the language reaches maturity, I will start adding new language features that people have been requesting:
    • Resizable arrays
    • Global dynamic arrays
    • Structs
    • Classes
    • Closures/nested functions
    • Discriminated unions
    • Dynamic types
    • First-class FFI


    SourcePawn 2 includes garbage collection. I've implemented a very basic garbage collector that only runs on map changes. For most use cases I've managed to maintain SourcePawn's performance and memory guarantees surrounding arrays, which is great.

    Aside from that, the entire architecture is much more amenable to high-powered performance optimizations than SourcePawn 1. Although the implementation right now is simple (GC is not realtime, and the execution mode is an interpreter), the entire architecture is geared toward making an advanced GC and an optimizing JIT very easy.
    Now for the bad part:
    There are many language features I will not implement. They are either too difficult to support in a modern design, or they are inherently bad features that may impede progress. Next to each I've listed what the eventual replacement will be:
    • Enum structs (replacement: actual structs)
    • #pragma semicolon (replacement: none, semicolons cannot be required)
    • #define X Y (replacement: use "const" or "static const")
    • #define X() ... (replacement: none, use functions)
    • #pragma (none, #pragmas are unneeded and will be ignored)
    • funcenum (replacement undecided)
    • Anything in <functions.inc> (replacement: module system like Java/C#)
    • Variadic arguments (replacement: alternate syntax I can talk about later)
    • Using String: as a non-array tag (replacement: none)
    • Tag mismatches as warnings (replacement: none, these are bugs)
    • #include "" ("use" keyword)
    • Enums with non-uniformly typed values (replacement: none, these are bugs)
    • Naming enums "Float", "String", "bool", etc. (replacement: none, these are bugs)

    #pragma semicolon (replacement: none, semicolons cannot be required)




    Programing without semicolons!? IMPOSSIBLE!!!!!!!!!!!!!




  2. Default

    So use commas in your loop initialization instead?


    Quote Originally Posted by Zero
    So... what your trying to tell me is that you saw a spherical square?

  3. Default

    Well, I used to code for AMXX(pawn). How much different is sourcepawn?

  4. Default

    Quote Originally Posted by ZERO View Post
    Sourcemod 2 is on the way. This will result in major reprogramming of most mods to take advantage or new features and better performance: Now for the bad part:#pragma semicolon (replacement: none, semicolons cannot be required)Programing without semicolons!? IMPOSSIBLE!!!!!!!!!!!!!
    "written by ITB" your welcome people.
    -The enemy of my enemy is my friend-

  5. Default

    so is this gana rebrake wcs?

    Anime-Planet.com - anime | manga | reviews
    Once more into the fray.
    Into the last good fight I'll ever know.
    Live or die on this day.
    Live or die on this day.

  6. Default

    No it is reverse compatable but things that have a LOT of code like wcs will want to be reprogramed for this b/c it will run MUCH FASTER AND MORE STABLE.



  7. Default

    Wait after reading more closely:
    Here are the known language features I have not implemented, but will implement:
    Optional semicolons



  8. Default

    so how long will it take to reprogram all this?

    Anime-Planet.com - anime | manga | reviews
    Once more into the fray.
    Into the last good fight I'll ever know.
    Live or die on this day.
    Live or die on this day.

  9. Default

    Are we there yet?

  10. #10
    Join Date
    Jan 2012
    Location
    East Coast (and that's all I'm tellin' xD)
    Posts
    410

    Default

    Is this going to be a sudden change (ex: BAM! it comes out, and automatically get uploaded to the servers), or will you be setting it up on the test servers to play around with before initilizing the changes on the servers?

    Also, you mentioned putting in a "basic garbage collector that runs on map changes". Does this pertain to random data or are you talking about the actual mapvote code? I guess what I mean is; will you be able to reprogram some of the mapvotes to better circulate the maps (most noticeable on zmod I feel, it tends to go towards the escape maps and older cade maps that were put on the server furthest back) when this new system is put in place?
    Artist's Representation - "Finding life on the go board"

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •