Re: Initial refactoring of plperl.c - draft [PATCH]

Поиск
Список
Период
Сортировка
Искать

Re: Initial refactoring of plperl.c - draft [PATCH]

От:
Tom Lane <tgl@sss.pgh.pa.us>
Дата:

Initial refactoring of plperl.c - draft [PATCH]

От:
Tim Bunce <Tim.Bunce@pobox.com>
Дата:
I've started work on the enhancements to plperl I outlined on pg-general
(XXX thread)
I have a working implementation of those changes, plus some performance
enhancements, that I'm now re-working into a clean set of tested and
polished patches.

This patch is a first step that doesn't add any extra functionality.
It refactors the internals to make adding the extra functionality
easier (and more clearly visible).

Changes in this patch:

- Changed MULTIPLICITY check from runtime to compiletime.
    No loads the large Config module.
- Changed plperl_init_interp() to return new interp
    and not alter the global interp_state
- Moved plperl_safe_init() call into check_interp().
- Removed plperl_safe_init_done state variable
    as interp_state now covers that role.
- Changed plperl_create_sub() to take a plperl_proc_desc argument.
- Simplified return value handling in plperl_create_sub.
- Adds a test for the effect of the utf8fix function.

I'd appreciate any feedback on the patch.

The next step I plan is to move the large multi-line string literal
macros (PERLBOOT, SAFE_OK etc) into external perl code files.
That'll make refactoring, extending and maintaining that perl
code far simpler.

A $pkglib_path/perl directory seems an appropriate place for this code.
Assuming that's okay, how should I go about creating that directory and
putting files there during build/installation?

I could implement that and include it as an update to this patch, or as
a new patch on top. Which would be preferable?

Tim.

Re: Initial refactoring of plperl.c - draft [PATCH]

От:
Tim Bunce <Tim.Bunce@pobox.com>
Дата:

Initial refactoring of plperl.c [PATCH]

От:
Tim Bunce <Tim.Bunce@pobox.com>
Дата:
Following on from my earlier draft plperl.c refactoring patch, here's a
new version that's complete (from my perspective at least).

I've started work on the enhancements to plperl I outlined on pg-general
(in the "Wishlist of PL/Perl Enhancements for 8.5" thread).
I have a working implementation of those changes, plus some performance
enhancements, that I'm now re-working into a clean set of tested and
polished patches.

This patch is a first step that doesn't add any extra functionality.
It refactors the internals to make adding the extra functionality
easier (and more clearly visible).

Changes in this patch:

- Changed MULTIPLICITY check from runtime to compiletime.
    No loads the large Config module.
- Changed plperl_init_interp() to return new interp
    and not alter the global interp_state
- Moved plperl_safe_init() call into check_interp().
- Removed plperl_safe_init_done state variable
    as interp_state now covers that role.
- Changed plperl_create_sub() to take a plperl_proc_desc argument.
- Simplified return value handling in plperl_create_sub.
- Added a test for the effect of the utf8fix function.
- Changed perl.com link in the docs to perl.org and tweaked
    wording to clarify that require, not use, is what's blocked.
- Moved perl code in large multi-line C string literal macros
    out to plc_*.pl files.
- Added a test2macro.pl utility to convert the plc_*.pl files to
    macros in a perlchunks.h file which is #included

I'd appreciate any feedback on the patch.

Tim.

Re: Initial refactoring of plperl.c [PATCH]

От:
Tim Bunce <Tim.Bunce@pobox.com>
Дата:

Re: Initial refactoring of plperl.c [PATCH]

От:
Tim Bunce <Tim.Bunce@pobox.com>
Дата:

Re: Initial refactoring of plperl.c [PATCH]

От:
Tim Bunce <Tim.Bunce@pobox.com>
Дата:

Re: Initial refactoring of plperl.c [PATCH]

От:
Andrew Dunstan <andrew@dunslane.net>
Дата:

Re: Initial refactoring of plperl.c [PATCH]

От:
Andrew Dunstan <andrew@dunslane.net>
Дата:
FAQ