Difference between revisions of "SourceMod 1.1.0 Release Notes"

From AlliedModders Wiki
Jump to: navigation, search
m
m
Line 11: Line 11:
  
 
=JIT Changes=
 
=JIT Changes=
SourcePawn's language runtime has undergone some major facelifts.  All SourceMod-specific code has been pulled out and cleaned up so it can be embedded in other applications. 
 
 
 
==User Changes==
 
==User Changes==
 
The concept of "debug mode" has been removed.  Debug mode is now always on.  The runtime has been reworked so this is no longer a performance loss.   
 
The concept of "debug mode" has been removed.  Debug mode is now always on.  The runtime has been reworked so this is no longer a performance loss.   
Line 26: Line 24:
  
 
The <tt>ISourcePawnEngine</tt> API has been deprecated in favor of <tt>ISourcePawnEngine2</tt>.  The new API reflects the restructuring.  For example, it provides a single entry point for creating an <tt>IPluginRuntime</tt> from a file.
 
The <tt>ISourcePawnEngine</tt> API has been deprecated in favor of <tt>ISourcePawnEngine2</tt>.  The new API reflects the restructuring.  For example, it provides a single entry point for creating an <tt>IPluginRuntime</tt> from a file.
 +
 +
Lastly, the SourcePawn runtime (<tt>sourcepawn.jit.x86</tt>) is now entirely separated from SourceMod.  It can be embedded into other GPL3 applications, for better or worse.  The API is separate and stable enough such that you can take the JIT library from SourceMod 1.1 and use it right in your own app.  Documentation on doing this can be written upon request.

Revision as of 23:56, 20 September 2008

Map Management Changes

SourceMod's map management plugins have gone through huge overhauls to address many community requested features and bugs.

The new "mapchooser" plugin provides a central system for other map-related plugins. In addition:

  • nominations adds nominations into map votes.
  • rockthevote lets users start early map votes.
  • nextmap automatically selects the next map and provides a "nextmap" chat trigger.
  • randomcycle randomly selects the next map.

To learn more about the new map management system, see Map Management.

JIT Changes

User Changes

The concept of "debug mode" has been removed. Debug mode is now always on. The runtime has been reworked so this is no longer a performance loss.

This decision was made partially to clean up some very inefficient code, but it's also for support. Users no longer have to manually toggle or reconfigure plugins before reporting errors.

The JIT (just-in-time compiler) is responsible for converting plugins to machine code for speed. Previously, plugins were translated to machine code all at once on load. In SourceMod 1.1 this has changed. Plugins are now incrementally compiled as functions get called for the first time. This might help load time, but was actually done to improve internal logic.

Developer Changes

Dependence on private or internal structures has been eliminated. Plugins are now represented by IPluginRuntime structures, and contexts are now solely represented by an IPluginContext. The sp_plugin_t and sp_context_t structures have been removed.

A huge number of functions in IPluginContext have been deprecated and moved to IPluginRuntime as part of this effort. Contexts are now intended only to represent a thread of execution. Similarly, function invocation is now defined as being invocation of a particular IPluginFunction combined with an IPluginContext (a default contexts exists for compatibility).

The ISourcePawnEngine API has been deprecated in favor of ISourcePawnEngine2. The new API reflects the restructuring. For example, it provides a single entry point for creating an IPluginRuntime from a file.

Lastly, the SourcePawn runtime (sourcepawn.jit.x86) is now entirely separated from SourceMod. It can be embedded into other GPL3 applications, for better or worse. The API is separate and stable enough such that you can take the JIT library from SourceMod 1.1 and use it right in your own app. Documentation on doing this can be written upon request.