[INFO]The Reasons Why Pawn Will Not Be Continued

Started by MacTavish, Dec 29, 2014, 06:27 AM

Previous topic - Next topic

MacTavish

Quote from: stormeus on Aug 04, 2014, 02:44 PMThat's your reason Pawn should be in continued development. Here are our reasons it shouldn't be.

  • Pawn is an abandoned language. Its last release of any kind was in 2012. Any bugs in the underlying language would become the burden of the development team. Squirrel is in active development and even had a beta release just a month or two ago for Squirrel 3.1.

  • Pawn is an orphaned language. The only major supporters of Pawn are SA:MP and AMX Mod X/SourceMod, both of which use flavors of Pawn that are modified and SourceMod using a heavily modified version of Pawn. Squirrel is used by Valve (in L4D2, Portal 2 and CS:GO) and OpenTTD.

  • Pawn is a dead language. There are only two servers on the masterlist that use Pawn. Literally every other server queried was a Squirrel server.

  • Pawn is a buggy language. While its C-like syntax offers faster speed in an embedded environment, a game server is not an embedded environment. There are many things that can go wrong between your script, the plugin interface, and the server.

  • Pawn is a dumb language. It has no concept of exception handling. If an error occurs in the execution of a script, like trying to work on a null pointer, you will not be informed. Pawn will simply crash out. And then the server will crash out. And then your server will crash often if you aren't extremely careful.

  • Pawn is a contrived language. Because it is so verbose and C-like, it is absolutely stupid to do any scripting work in it. The best example of this is strings. Strings in Pawn are the dumbest thing because you have to declare how long the string might be. Because they don't know how long some input might be, scripters will do things like make strings with lengths of 512 or 1024 cells, using kilobytes of memory for single strings. It sounds small, but this is a stupid waste of memory.

  • Pawn is a quirky language. What the flying fuck is a public function and why is it different from a regular function? Why can't stock functions return the same values as public and other functions? Why is Float an explicitly declared datatype but things like ints and strings are just declared using the new keyword?

  • Pawn is a complex language. Scripters like abstraction. Developers like abstracting scripts. Pawn is less abstract than Squirrel. If we have to handle concrete programming like explicit memory management with cells, explicit typing, in-script pointers and dereferencing and other weird tidbits (see above), everything is more complex for you and me both. And then your server crashes.

Is Pawn good for embedded work? Probably, yeah.

Is Pawn good for scripting here? Hell no. So why should we continue to support it?

For one thing, SA:MP is no longer a sister project of VC:MP — that role has largely been supplanted by LU. SA:MP developers no longer wish to have any relation to VC:MP, and in fact when I and other VC:MP players had attempted to promote VC:MP 0.4 Public Beta 3 on their forum (bearing in mind that VC:MP was, years ago, their own project), the thread was removed several times, stating that it was irrelevant.

SA:MP scripters are thus irrelevant to us if not for size. Mafia II: Multiplayer uses Squirrel. IV:MP and its successor, MultIV, use Squirrel. LU, our sister project, uses Squirrel.

For another, if we continue to support Pawn, we continue to support the headaches produced by Pawn. If we force scripters to use a language that is stable, error-resilient and actually good, not only do we avert this, but you actually learn a language that is simpler and more feature-complete.

Which is another thing — it's a bit fallacious to say we shouldn't drop Pawn support because people don't want to learn a new language. To have begun scripting in VC:MP, you had to have learned Pawn in the first place. Perhaps the same people will be able to deal with it and learn Squirrel, like the dozens of other people who have done the same and learned Squirrel in our little post-Pawn world.

Someone else is welcome to write a Pawn module, and if we really, really feel there's a problem with dropping Pawn support, then maybe we'll write a Pawn module for the sheer sake of compatibility with R2, and Pawn scripters will have no access to the new functions in 0.4.

However, this has been coming for a long time, as far back as the release of the Squirrel server really. Pawn is dead.

Grand Hunting Project
Join #SLC, #KAKAN, #Doom, #GHP @LUnet

Retired VC:MP Player/Scripter :P

.

Wasn't this obvious already? BTW, Squirrels development has gone slow as well :D
.

ysc3839



.

Quote from: ysc3839 on Jan 02, 2015, 11:16 AMI think lua is good! :)

It is but it's also a mind f**k for a programer. I've actually written a plugin for LuaJit but in order to actually take advantage of the JIT functionality I had to use of the FFI mechanism which is not that pretty for when you make mistakes. And considering that Lua is a dynamically typed language there's plenty of room for mistakes with FFI. I believe I still have the prototype around and I'll probably finish it and release it one day (probably).

I've now focused my attention to my AngelScript module and I hope to make a release in the next few days and start working on the documentation. It's a much safer module that tries to catch all the errors at start-up rather then at run-time when the server is running and has players connected.
.

karan20000000000

With regards,
KP
------------------------------------------

.

Quote from: karan20000000000 on Jan 11, 2015, 04:37 PMHow about java for vc-mp?

So? Feel free to do it. Nobody is obligated to implement and maintain these things.
.