b
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 874
B::C 5.8.8
B::C is Perl compilers C backend. more>>
B::C is Perl compilers C backend.
SYNOPSIS
perl -MO=C[,OPTIONS] foo.pl
This compiler backend takes Perl source and generates C source code corresponding to the internal structures that perl uses to run your program. When the generated C source is compiled and run, it cuts out the time which perl would have taken to load and parse your program into its internal semi-compiled form. That means that compiling with this backend will not help improve the runtime execution speed of your program but may improve the start-up time. Depending on the environment in which your program runs this may be either a help or a hindrance.
OPTIONS
If there are any non-option arguments, they are taken to be names of objects to be saved (probably doesnt work properly yet). Without extra arguments, it saves the main program.
-ofilename
Output to filename instead of STDOUT
-v
Verbose compilation (currently gives a few compilation statistics).
--
Force end of options
-uPackname
Force apparently unused subs from package Packname to be compiled. This allows programs to use eval "foo()" even when sub foo is never seen to be used at compile time. The down side is that any subs which really are never used also have code generated. This option is necessary, for example, if you have a signal handler foo which you initialise with $SIG{BAR} = "foo". A better fix, though, is just to change it to $SIG{BAR} = &foo. You can have multiple -u options. The compiler tries to figure out which packages may possibly have subs in which need compiling but the current version doesnt do it very well. In particular, it is confused by nested packages (i.e. of the form A::B) where package A does not contain any subs.
-D
Debug options (concatenated or separate flags like perl -D).
-Do
OPs, prints each OP as its processed
-Dc
COPs, prints COPs as processed (incl. file & line num)
-DA
prints AV information on saving
-DC
prints CV information on saving
-DM
prints MAGIC information on saving
-f
Force options/optimisations on or off one at a time. You can explicitly disable an option using -fno-option. All options default to disabled.
-fcog
Copy-on-grow: PVs declared and initialised statically.
-fsave-data
Save package::DATA filehandles ( only available with PerlIO ).
-fppaddr
Optimize the initialization of op_ppaddr.
-fwarn-sv
Optimize the initialization of cop_warnings.
-fuse-script-name
Use the script name instead of the program name as $0.
-fsave-sig-hash
Save compile-time modifications to the %SIG hash.
-On
Optimisation level (n = 0, 1, 2, ...). -O means -O1.
-O0
Disable all optimizations.
-O1
Enable -fcog.
-O2
Enable -fppaddr, -fwarn-sv.
-llimit
Some C compilers impose an arbitrary limit on the length of string constants (e.g. 2048 characters for Microsoft Visual C++). The -llimit options tells the C backend not to generate string literals exceeding that limit.
<<lessSYNOPSIS
perl -MO=C[,OPTIONS] foo.pl
This compiler backend takes Perl source and generates C source code corresponding to the internal structures that perl uses to run your program. When the generated C source is compiled and run, it cuts out the time which perl would have taken to load and parse your program into its internal semi-compiled form. That means that compiling with this backend will not help improve the runtime execution speed of your program but may improve the start-up time. Depending on the environment in which your program runs this may be either a help or a hindrance.
OPTIONS
If there are any non-option arguments, they are taken to be names of objects to be saved (probably doesnt work properly yet). Without extra arguments, it saves the main program.
-ofilename
Output to filename instead of STDOUT
-v
Verbose compilation (currently gives a few compilation statistics).
--
Force end of options
-uPackname
Force apparently unused subs from package Packname to be compiled. This allows programs to use eval "foo()" even when sub foo is never seen to be used at compile time. The down side is that any subs which really are never used also have code generated. This option is necessary, for example, if you have a signal handler foo which you initialise with $SIG{BAR} = "foo". A better fix, though, is just to change it to $SIG{BAR} = &foo. You can have multiple -u options. The compiler tries to figure out which packages may possibly have subs in which need compiling but the current version doesnt do it very well. In particular, it is confused by nested packages (i.e. of the form A::B) where package A does not contain any subs.
-D
Debug options (concatenated or separate flags like perl -D).
-Do
OPs, prints each OP as its processed
-Dc
COPs, prints COPs as processed (incl. file & line num)
-DA
prints AV information on saving
-DC
prints CV information on saving
-DM
prints MAGIC information on saving
-f
Force options/optimisations on or off one at a time. You can explicitly disable an option using -fno-option. All options default to disabled.
-fcog
Copy-on-grow: PVs declared and initialised statically.
-fsave-data
Save package::DATA filehandles ( only available with PerlIO ).
-fppaddr
Optimize the initialization of op_ppaddr.
-fwarn-sv
Optimize the initialization of cop_warnings.
-fuse-script-name
Use the script name instead of the program name as $0.
-fsave-sig-hash
Save compile-time modifications to the %SIG hash.
-On
Optimisation level (n = 0, 1, 2, ...). -O means -O1.
-O0
Disable all optimizations.
-O1
Enable -fcog.
-O2
Enable -fppaddr, -fwarn-sv.
-llimit
Some C compilers impose an arbitrary limit on the length of string constants (e.g. 2048 characters for Microsoft Visual C++). The -llimit options tells the C backend not to generate string literals exceeding that limit.
Download (12.2MB)
Added: 2007-06-26 License: Perl Artistic License Price:
907 downloads
Other version of B
jE6-B 0.3
jE6-B is an emulator of some of the functionality of the E6B Flight Computer. more>>
jE6-B project is an emulator of some of the functionality of the E6B Flight Computer.
This program was inspired by the similar application called Virtual E6-B written by Jesse Kempa. However that application does not seem to have been updated for some time and was based on Visual Basic, so is only for Windows (without emulation).
As I am a very keen Python user, I decided to write an Open Source Cross-Platform version of the features provided by this previous program in that language. This is my first open source project, so this program is very much a learning exercise for me. After a little playing with the various GUI toolkits available, I decided to write the program actually in Jython (a Java implementation of Python - see www.jython.org), which would make use of the Java Swing GUI toolset and also the cross-platform advantages offered by Java.
<<lessThis program was inspired by the similar application called Virtual E6-B written by Jesse Kempa. However that application does not seem to have been updated for some time and was based on Visual Basic, so is only for Windows (without emulation).
As I am a very keen Python user, I decided to write an Open Source Cross-Platform version of the features provided by this previous program in that language. This is my first open source project, so this program is very much a learning exercise for me. After a little playing with the various GUI toolkits available, I decided to write the program actually in Jython (a Java implementation of Python - see www.jython.org), which would make use of the Java Swing GUI toolset and also the cross-platform advantages offered by Java.
Download (0.50MB)
Added: 2006-07-28 License: GPL (GNU General Public License) Price:
1191 downloads
B-net 1.1
B-net Software is a Website Content Management software that allows you have a dynamic website. more>>
B-net project is a Website Content Management software that allows you have a dynamic website and add content to your website without knowing anything about HTML.
Main features:
- News Publishing
- Polls / Opinions
- Guest Book
- ShoutBox
- Image Gallery
- Admin interface for managing smilies (used in shoutbox, guestbook etc)
- Admin interface for managing Bad Word List
- Templating system.
- Multi Language support. Kiswahili being one of them of course.
Enhancements:
- Security holes in guesbook.php and shoutbox.php have been fixed.
<<lessMain features:
- News Publishing
- Polls / Opinions
- Guest Book
- ShoutBox
- Image Gallery
- Admin interface for managing smilies (used in shoutbox, guestbook etc)
- Admin interface for managing Bad Word List
- Templating system.
- Multi Language support. Kiswahili being one of them of course.
Enhancements:
- Security holes in guesbook.php and shoutbox.php have been fixed.
Download (0.14MB)
Added: 2006-08-25 License: GPL (GNU General Public License) Price:
1158 downloads
Plan/B 1.5
Plan/B is a network-aware file backup system. more>>
Plan/B is a network aware file backup system specifically designed to make the backup of files from multiple machines to a variety of devices simple.
The system provides features such as comprehensive reporting, the ability to use CDROM (and soon DVD) drives across the network, as well as centralised management.
Plan/B can be deployed on Windows and Linux systems.
Main features:
General
- Backup anything, to anywhere: You can use any kind of device that plasticine knows about (currently CDROM, Local disk, Network share, FTP device) as either a source or destination. There is no limitation (as there is in DataArmour).
- Multiple sources, Multiple Destinations: A backup may source its files from multiple machines and devices. The destinations for a backup job can also be any number of machines or devices. Thus it is now easy to have a single set of files (documents, code or other important assets) copied to more than one location using a single job. No need to clone a job anymore!
- Multi-Platform: As the system is written in Java, it will work with any machine for which there is a VM (this is true for the backup server and agents). The administration console can be run on either a Linux or Windows machine (when SWT, the GUI framework used for the console matures on OsX, the console will be able to run on that OS as well)
- Volume spanning: If any removable destination is out of space, then it is possible to request the next volume during the backup process. A good example of this is backup to multiple CDs. Plasticine supports both the spanning of single files across multiple media, and also the saving of complete files across different media. In the first case, a large file can be split across two volumes. In the second case, only complete files are written to any volume (obviously, if the file is larger than the size of the volume, it will have to be split up).
- Flexible selection: A single job can backup whatever is deemed important to the user. The files to backup are specified by rules, which can be as simple as include everything, and complex as include all word documents, all excel spreadsheets under my docs directory, and everything NOT ending in .bak under the data directory
- Flexible scheduler: Jobs can be run whenever you like. The current scheduling implementation takes on a form very similar to Cron, but other implementations are easily added. The important point here is that the process of deciding when a backup should be run is completely separated from anything else about the backup job. This is a change from DataArmour, where the scheduling (specifically, the weekly incremental backup job scheduling) is fixed to run on a Monday, with a full backup occurring every week. In Plasticine, user defined schedules are possible.
- Statistics: The system emits various statistics while in operation, including current progress of various jobs, jobs in the run queue, current load, and recent logged events.
Enterprise
- Reliable:The remote agents are resilient to network failure. If a server cannot be contacted, they will move into a discovery mode until the server is back up. No configuration is required!
- Painless installation: The system is very easy to install - just run the included windows installer and tell it what kind of install you want. All services are configured automatically.
- Administration Console: The backup server is a separate process, which is administered via a GUI console. The console can be run from any machine, and can control and manage the settings for the backup server and any client. That means you can configure everything from one place.
Enhancements:
- This release added an option to specify that the destination location should be deleted prior to the backup occuring.
- It also added an option to copy full folders and specify whether or not to create an absolute or relative backup.
- Completion was sped up by detaching the email sending from the job completion process.
- Warnings are now used to log more in the reports for situations that are not necessarily fatal.
- When adding a source or destination, the file browser is now automatically opened for you.
- It is now possible to have multiple email recipients for a backup report.
<<lessThe system provides features such as comprehensive reporting, the ability to use CDROM (and soon DVD) drives across the network, as well as centralised management.
Plan/B can be deployed on Windows and Linux systems.
Main features:
General
- Backup anything, to anywhere: You can use any kind of device that plasticine knows about (currently CDROM, Local disk, Network share, FTP device) as either a source or destination. There is no limitation (as there is in DataArmour).
- Multiple sources, Multiple Destinations: A backup may source its files from multiple machines and devices. The destinations for a backup job can also be any number of machines or devices. Thus it is now easy to have a single set of files (documents, code or other important assets) copied to more than one location using a single job. No need to clone a job anymore!
- Multi-Platform: As the system is written in Java, it will work with any machine for which there is a VM (this is true for the backup server and agents). The administration console can be run on either a Linux or Windows machine (when SWT, the GUI framework used for the console matures on OsX, the console will be able to run on that OS as well)
- Volume spanning: If any removable destination is out of space, then it is possible to request the next volume during the backup process. A good example of this is backup to multiple CDs. Plasticine supports both the spanning of single files across multiple media, and also the saving of complete files across different media. In the first case, a large file can be split across two volumes. In the second case, only complete files are written to any volume (obviously, if the file is larger than the size of the volume, it will have to be split up).
- Flexible selection: A single job can backup whatever is deemed important to the user. The files to backup are specified by rules, which can be as simple as include everything, and complex as include all word documents, all excel spreadsheets under my docs directory, and everything NOT ending in .bak under the data directory
- Flexible scheduler: Jobs can be run whenever you like. The current scheduling implementation takes on a form very similar to Cron, but other implementations are easily added. The important point here is that the process of deciding when a backup should be run is completely separated from anything else about the backup job. This is a change from DataArmour, where the scheduling (specifically, the weekly incremental backup job scheduling) is fixed to run on a Monday, with a full backup occurring every week. In Plasticine, user defined schedules are possible.
- Statistics: The system emits various statistics while in operation, including current progress of various jobs, jobs in the run queue, current load, and recent logged events.
Enterprise
- Reliable:The remote agents are resilient to network failure. If a server cannot be contacted, they will move into a discovery mode until the server is back up. No configuration is required!
- Painless installation: The system is very easy to install - just run the included windows installer and tell it what kind of install you want. All services are configured automatically.
- Administration Console: The backup server is a separate process, which is administered via a GUI console. The console can be run from any machine, and can control and manage the settings for the backup server and any client. That means you can configure everything from one place.
Enhancements:
- This release added an option to specify that the destination location should be deleted prior to the backup occuring.
- It also added an option to copy full folders and specify whether or not to create an absolute or relative backup.
- Completion was sped up by detaching the email sending from the job completion process.
- Warnings are now used to log more in the reports for situations that are not necessarily fatal.
- When adding a source or destination, the file browser is now automatically opened for you.
- It is now possible to have multiple email recipients for a backup report.
Download (13.2MB)
Added: 2005-12-17 License: Freeware Price:
1406 downloads
Virgil B-03
Virgil is an new, light-weight object-oriented programming language. more>>
Virgil projetc is an new, object-oriented, light-weight programming language that is designed for building software for resource-constrained embedded systems at the lowest level. Microcontroller programmers can now develop complete software systems, including hardware drivers and OS services, in one language, without the need to resort to unsafe libraries or native code.
Virgil also provides a whole-program compiler system that applies novel global optimization techniques to produce efficient machine code that runs directly on the hardware, without the need of a virtual machine or a language runtime system.
Why are microcontrollers important?
Embedded computers are everywhere. While the desktop computer revolution has brought computing to millions of users worldwide, the embedded system revolution has been quietly automating the world we live in--everything from the cars we drive to the roadways we drive them on; from factory production to the goods we use every day. In 2005, nearly 6 billion microcontroller units were manufactured. Today, microcontrollers outnumber people on this planet by more than 5 to 1. Soon, most electronic devices will have a software-programmable embedded computer with capabilities ranging from simple arithmetic to wireless communication, and microcontrollers offer a compelling solution for many of these products.
How is software for embedded systems different?
Software in this environment has very different requirements than traditional desktop and server computers. First, embedded programs must control devices that sense and interact with the physical world, in contrast to desktop and server software that is driven by databases, websites, and input from users. Second, embedded systems often operate in safety critical real-time scenarios, where software is tasked with controlling physical processes and actuators that can pose physical danger to people, infrastructure, and the environment. Third, the cost of software update for billions of devices makes it largely infeasible, vastly increasing the importance of software verification.
How can new language technology help?
Advances in programming languages over the past 30 years have yielded demonstrable productivity gains, including better static checking, more expressiveness, and better portability and maintability. Yet these advances have not been put into practical use in developing embedded systems software. The continued use of unsafe, low-level languages that frustrate automated program reasoning and verification poses a significant stumbling block to progress. While no magic bullet exists for software development, we believe that applying modern technology to this problem will produce real, tangible gains in both software quality and efficiency.
Main features:
Object-oriented Features
- Classes and single-inheritance
- Virtual methods
- Constructors
- Orphan classes
- Always pass by reference
Procedural Features
- Components
- Loops
- Switches
- Statements
Functional Features
- Delegates
- Aggressive inlining *
- Tail call optimization *
Other
- Arrays
- Bit-level types
- Compile-time Application Initialization
- Hardware register access
- Interrupt handlers
- Well-defined language semantics
- Heap optimization
- Exceptions *
- = the implementation of this feature is not yet complete in prototype compiler
<<lessVirgil also provides a whole-program compiler system that applies novel global optimization techniques to produce efficient machine code that runs directly on the hardware, without the need of a virtual machine or a language runtime system.
Why are microcontrollers important?
Embedded computers are everywhere. While the desktop computer revolution has brought computing to millions of users worldwide, the embedded system revolution has been quietly automating the world we live in--everything from the cars we drive to the roadways we drive them on; from factory production to the goods we use every day. In 2005, nearly 6 billion microcontroller units were manufactured. Today, microcontrollers outnumber people on this planet by more than 5 to 1. Soon, most electronic devices will have a software-programmable embedded computer with capabilities ranging from simple arithmetic to wireless communication, and microcontrollers offer a compelling solution for many of these products.
How is software for embedded systems different?
Software in this environment has very different requirements than traditional desktop and server computers. First, embedded programs must control devices that sense and interact with the physical world, in contrast to desktop and server software that is driven by databases, websites, and input from users. Second, embedded systems often operate in safety critical real-time scenarios, where software is tasked with controlling physical processes and actuators that can pose physical danger to people, infrastructure, and the environment. Third, the cost of software update for billions of devices makes it largely infeasible, vastly increasing the importance of software verification.
How can new language technology help?
Advances in programming languages over the past 30 years have yielded demonstrable productivity gains, including better static checking, more expressiveness, and better portability and maintability. Yet these advances have not been put into practical use in developing embedded systems software. The continued use of unsafe, low-level languages that frustrate automated program reasoning and verification poses a significant stumbling block to progress. While no magic bullet exists for software development, we believe that applying modern technology to this problem will produce real, tangible gains in both software quality and efficiency.
Main features:
Object-oriented Features
- Classes and single-inheritance
- Virtual methods
- Constructors
- Orphan classes
- Always pass by reference
Procedural Features
- Components
- Loops
- Switches
- Statements
Functional Features
- Delegates
- Aggressive inlining *
- Tail call optimization *
Other
- Arrays
- Bit-level types
- Compile-time Application Initialization
- Hardware register access
- Interrupt handlers
- Well-defined language semantics
- Heap optimization
- Exceptions *
- = the implementation of this feature is not yet complete in prototype compiler
Download (0.57MB)
Added: 2007-05-14 License: BSD License Price:
894 downloads
B-Chat 0.13
B-Chat is a small application which allows you to chat on Battle.net. more>>
B-Chat is a small application which allows you to chat on Battle.net.
It has no fancy GUI interface (yet :-), but I have plans for making it Gnome compliant.
However, at the moment it works pretty much like the regular UNIX telnet client, with the lines that are being sent and received mixed into eachother.
It can make it hard to read at times, but it serves my purpose.
I started work on this client because I wanted a way to chat with my friends on Battle.net while I was on Linux.
I really didnt feel like rebooting to Windows just to run TopazChat or ScumBot (I dont like Wine either :-), so I decided to code my own chat client.
The client is still in its early stages, so its very rough and may be hard to use. You have to supply the name o the Battle.net server that you are going to be connecting to. This will change in the future.
<<lessIt has no fancy GUI interface (yet :-), but I have plans for making it Gnome compliant.
However, at the moment it works pretty much like the regular UNIX telnet client, with the lines that are being sent and received mixed into eachother.
It can make it hard to read at times, but it serves my purpose.
I started work on this client because I wanted a way to chat with my friends on Battle.net while I was on Linux.
I really didnt feel like rebooting to Windows just to run TopazChat or ScumBot (I dont like Wine either :-), so I decided to code my own chat client.
The client is still in its early stages, so its very rough and may be hard to use. You have to supply the name o the Battle.net server that you are going to be connecting to. This will change in the future.
Download (0.006MB)
Added: 2006-09-20 License: GPL (GNU General Public License) Price:
1143 downloads
B::More 1.01
B::More Perl module contains additional introspection methods and functions. more>>
B::More Perl module contains additional introspection methods and functions.
Adds stuff I needed in B and wasnt there.
Feel free to email me with suggestions for other methods I can add.
B::SV METHODS
svref
Inverse of B::svref_2object.
B::PVMG METHODS
magic
Returns a string containing the types of all MAGIC.
magic TYPE
Returns the B::MAGIC object for the magic with specified type, or undef if no magic with that type was found.
FUNCTIONS
defstash
Returns the default stash (main::) as B::HV object.
curstash
Returns the current stash (package) as B::HV object. Note that this only makes sense at compile time (in a BEGIN-block or in eval-string).
<<lessAdds stuff I needed in B and wasnt there.
Feel free to email me with suggestions for other methods I can add.
B::SV METHODS
svref
Inverse of B::svref_2object.
B::PVMG METHODS
magic
Returns a string containing the types of all MAGIC.
magic TYPE
Returns the B::MAGIC object for the magic with specified type, or undef if no magic with that type was found.
FUNCTIONS
defstash
Returns the default stash (main::) as B::HV object.
curstash
Returns the current stash (package) as B::HV object. Note that this only makes sense at compile time (in a BEGIN-block or in eval-string).
Download (0.003MB)
Added: 2007-06-25 License: Perl Artistic License Price:
851 downloads
MySysop 2.0-b
MySysop is a PHP tool with AJAX support for managing MySQL server settings and monitoring process, variables, and status. more>>
MySysop is a PHP tool with AJAX support for managing MySQL server settings and monitoring process, variables, and status.
Enhancements:
- This version has a prototype window for the dialog window, new stats, and minor bugfixes.
<<lessEnhancements:
- This version has a prototype window for the dialog window, new stats, and minor bugfixes.
Download (0.082MB)
Added: 2007-06-19 License: GPL (GNU General Public License) Price:
858 downloads
B::Tree 0.02
B::Tree is a simplified version of B::Graph for demonstration. more>>
B::Tree is a simplified version of B::Graph for demonstration.
SYNOPSIS
perl -MO=Tree program | dot -Tps > tree.ps
This is a very cut-down version of B::Graph; it generates minimalist tree graphs of the op tree of a Perl program, merely connecting the op nodes and labelling each node with the type of op.
It was written as an example of how to write compiler modules for "Professional Perl", but Ive found it extremely useful for creating simple op tree graphs for use in presentations on Perl internals.
It requires the CPAN GraphViz module and the GraphViz package from http://www.research.att.com/sw/tools/graphviz/. It takes no options.
<<lessSYNOPSIS
perl -MO=Tree program | dot -Tps > tree.ps
This is a very cut-down version of B::Graph; it generates minimalist tree graphs of the op tree of a Perl program, merely connecting the op nodes and labelling each node with the type of op.
It was written as an example of how to write compiler modules for "Professional Perl", but Ive found it extremely useful for creating simple op tree graphs for use in presentations on Perl internals.
It requires the CPAN GraphViz module and the GraphViz package from http://www.research.att.com/sw/tools/graphviz/. It takes no options.
Download (0.002MB)
Added: 2007-06-26 License: Perl Artistic License Price:
856 downloads
B::CC 5.8.8
B::CC is Perl compilers optimized C translation backend. more>>
B::CC is Perl compilers optimized C translation backend.
SYNOPSIS
perl -MO=CC[,OPTIONS] foo.pl
This compiler backend takes Perl source and generates C source code corresponding to the flow of your program. In other words, this backend is somewhat a "real" compiler in the sense that many people think about compilers. Note however that, currently, it is a very poor compiler in that although it generates (mostly, or at least sometimes) correct code, it performs relatively few optimisations. This will change as the compiler develops. The result is that running an executable compiled with this backend may start up more quickly than running the original Perl program (a feature shared by the C compiler backend--see B::C) and may also execute slightly faster. This is by no means a good optimising compiler--yet.
OPTIONS
If there are any non-option arguments, they are taken to be names of objects to be saved (probably doesnt work properly yet). Without extra arguments, it saves the main program.
-ofilename
Output to filename instead of STDOUT
-v
Verbose compilation (currently gives a few compilation statistics).
--
Force end of options
-uPackname
Force apparently unused subs from package Packname to be compiled. This allows programs to use eval "foo()" even when sub foo is never seen to be used at compile time. The down side is that any subs which really are never used also have code generated. This option is necessary, for example, if you have a signal handler foo which you initialise with $SIG{BAR} = "foo". A better fix, though, is just to change it to $SIG{BAR} = &foo. You can have multiple -u options. The compiler tries to figure out which packages may possibly have subs in which need compiling but the current version doesnt do it very well. In particular, it is confused by nested packages (i.e. of the form A::B) where package A does not contain any subs.
-mModulename
Instead of generating source for a runnable executable, generate source for an XSUB module. The boot_Modulename function (which DynaLoader can look for) does the appropriate initialisation and runs the main part of the Perl source that is being compiled.
-D
Debug options (concatenated or separate flags like perl -D).
-Dr
Writes debugging output to STDERR just as its about to write to the programs runtime (otherwise writes debugging info as comments in its C output).
-DO
Outputs each OP as its compiled
-Ds
Outputs the contents of the shadow stack at each OP
-Dp
Outputs the contents of the shadow pad of lexicals as its loaded for each sub or the main program.
-Dq
Outputs the name of each fake PP function in the queue as its about to process it.
-Dl
Output the filename and line number of each original line of Perl code as its processed (pp_nextstate).
-Dt
Outputs timing information of compilation stages.
-f
Force optimisations on or off one at a time.
-ffreetmps-each-bblock
Delays FREETMPS from the end of each statement to the end of the each basic block.
-ffreetmps-each-loop
Delays FREETMPS from the end of each statement to the end of the group of basic blocks forming a loop. At most one of the freetmps-each-* options can be used.
-fomit-taint
Omits generating code for handling perls tainting mechanism.
-On
Optimisation level (n = 0, 1, 2, ...). -O means -O1. Currently, -O1 sets -ffreetmps-each-bblock and -O2 sets -ffreetmps-each-loop.
<<lessSYNOPSIS
perl -MO=CC[,OPTIONS] foo.pl
This compiler backend takes Perl source and generates C source code corresponding to the flow of your program. In other words, this backend is somewhat a "real" compiler in the sense that many people think about compilers. Note however that, currently, it is a very poor compiler in that although it generates (mostly, or at least sometimes) correct code, it performs relatively few optimisations. This will change as the compiler develops. The result is that running an executable compiled with this backend may start up more quickly than running the original Perl program (a feature shared by the C compiler backend--see B::C) and may also execute slightly faster. This is by no means a good optimising compiler--yet.
OPTIONS
If there are any non-option arguments, they are taken to be names of objects to be saved (probably doesnt work properly yet). Without extra arguments, it saves the main program.
-ofilename
Output to filename instead of STDOUT
-v
Verbose compilation (currently gives a few compilation statistics).
--
Force end of options
-uPackname
Force apparently unused subs from package Packname to be compiled. This allows programs to use eval "foo()" even when sub foo is never seen to be used at compile time. The down side is that any subs which really are never used also have code generated. This option is necessary, for example, if you have a signal handler foo which you initialise with $SIG{BAR} = "foo". A better fix, though, is just to change it to $SIG{BAR} = &foo. You can have multiple -u options. The compiler tries to figure out which packages may possibly have subs in which need compiling but the current version doesnt do it very well. In particular, it is confused by nested packages (i.e. of the form A::B) where package A does not contain any subs.
-mModulename
Instead of generating source for a runnable executable, generate source for an XSUB module. The boot_Modulename function (which DynaLoader can look for) does the appropriate initialisation and runs the main part of the Perl source that is being compiled.
-D
Debug options (concatenated or separate flags like perl -D).
-Dr
Writes debugging output to STDERR just as its about to write to the programs runtime (otherwise writes debugging info as comments in its C output).
-DO
Outputs each OP as its compiled
-Ds
Outputs the contents of the shadow stack at each OP
-Dp
Outputs the contents of the shadow pad of lexicals as its loaded for each sub or the main program.
-Dq
Outputs the name of each fake PP function in the queue as its about to process it.
-Dl
Output the filename and line number of each original line of Perl code as its processed (pp_nextstate).
-Dt
Outputs timing information of compilation stages.
-f
Force optimisations on or off one at a time.
-ffreetmps-each-bblock
Delays FREETMPS from the end of each statement to the end of the each basic block.
-ffreetmps-each-loop
Delays FREETMPS from the end of each statement to the end of the group of basic blocks forming a loop. At most one of the freetmps-each-* options can be used.
-fomit-taint
Omits generating code for handling perls tainting mechanism.
-On
Optimisation level (n = 0, 1, 2, ...). -O means -O1. Currently, -O1 sets -ffreetmps-each-bblock and -O2 sets -ffreetmps-each-loop.
Download (12.2MB)
Added: 2007-06-26 License: Perl Artistic License Price:
855 downloads
B::XPath 0.01
B::XPath class can search Perl optrees with XPath syntax. more>>
B::XPath class can search Perl optrees with XPath syntax.
SYNOPSIS
Perl represents programs internally as a tree of opcodes. To execute a program, it walks this tree, performing each operation as it encounters it. The B family of modules allows you to examine (and in some cases, manipulate) this optree on programs even as they run.
B::XPath allows you to use XPath syntax to select ops in the optree.
use B::XPath;
my $node = B::XPath->fetch_root( &some_function );
my $root = B::XPath->fetch_main_root();
# find all global scalar accesses
my @globals = $root->match( //gvsv );
# find all global scalar accesses within some_function() named $bob
my @bobs = $node->match( //gvsv[@NAME="bob"] );
Class Methods
There are two methods to use to start your match; both set the root of the tree to search. Theres also a nice helper method youll probably never use unless you find a bug.
fetch_root( $subref )
This method returns the B::XPath::Node object at the root of the optree for the subroutine reference. All matches performed on this node will search this branch of the optree for matching nodes.
fetch_main_root()
This method returns the B::XPath::Node object at the root of the program. Use this to search your entire program (at least, the part of it outside of any given subroutine).
find_op_class( $op )
Given a B::OP or descendent object, returns the name of the appropriate B::XPath::Node subclass to use to wrap that op so that B::XPath can manipulate it appropriately.
<<lessSYNOPSIS
Perl represents programs internally as a tree of opcodes. To execute a program, it walks this tree, performing each operation as it encounters it. The B family of modules allows you to examine (and in some cases, manipulate) this optree on programs even as they run.
B::XPath allows you to use XPath syntax to select ops in the optree.
use B::XPath;
my $node = B::XPath->fetch_root( &some_function );
my $root = B::XPath->fetch_main_root();
# find all global scalar accesses
my @globals = $root->match( //gvsv );
# find all global scalar accesses within some_function() named $bob
my @bobs = $node->match( //gvsv[@NAME="bob"] );
Class Methods
There are two methods to use to start your match; both set the root of the tree to search. Theres also a nice helper method youll probably never use unless you find a bug.
fetch_root( $subref )
This method returns the B::XPath::Node object at the root of the optree for the subroutine reference. All matches performed on this node will search this branch of the optree for matching nodes.
fetch_main_root()
This method returns the B::XPath::Node object at the root of the program. Use this to search your entire program (at least, the part of it outside of any given subroutine).
find_op_class( $op )
Given a B::OP or descendent object, returns the name of the appropriate B::XPath::Node subclass to use to wrap that op so that B::XPath can manipulate it appropriately.
Download (0.007MB)
Added: 2007-06-26 License: Perl Artistic License Price:
850 downloads
B::Flags 0.01
B::Flags is a Perl module that provides a friendlier flags for B. more>>
B::Flags is a Perl module that provides a friendlier flags for B.
SYNOPSIS
use B::Flags;
print B::main_root->flagspv;
print B::main_root->privatepv;
print $some_b_sv_object->flagspv;
By default, $foo->flags when passed an object in the B class will produce a relatively meaningless number, which one would need to grovel through the Perl source code in order to do anything useful with.
This module adds flagspv to the SV and op classes and privatepv to the op classes, which makes them easier to understand.
Warning: This module is not guaranteed compatible with any version of Perl below 5.7.0; however, Id like to make it so compatible, so if it fails to compile, mail me. Theres probably an #ifdef I need to add somewhere...
<<lessSYNOPSIS
use B::Flags;
print B::main_root->flagspv;
print B::main_root->privatepv;
print $some_b_sv_object->flagspv;
By default, $foo->flags when passed an object in the B class will produce a relatively meaningless number, which one would need to grovel through the Perl source code in order to do anything useful with.
This module adds flagspv to the SV and op classes and privatepv to the op classes, which makes them easier to understand.
Warning: This module is not guaranteed compatible with any version of Perl below 5.7.0; however, Id like to make it so compatible, so if it fails to compile, mail me. Theres probably an #ifdef I need to add somewhere...
Download (0.004MB)
Added: 2006-07-04 License: Perl Artistic License Price:
1207 downloads
B::Utils 0.30
B::Utils is a helper functions for op tree manipulation. more>>
B::Utils is a helper functions for op tree manipulation.
SYNOPSIS
use B::Utils;
These functions make it easier to manipulate the op tree.
FUNCTIONS
all_starts
all_roots
Returns a hash of all of the starting ops or root ops of optrees, keyed to subroutine name; the optree for main program is simply keyed to __MAIN__.
Note: Certain "dangerous" stashes are not scanned for subroutines: the list of such stashes can be found in @B::Utils::bad_stashes. Feel free to examine and/or modify this to suit your needs. The intention is that a simple program which uses no modules other than B and B::Utils would show no addition symbols.
This does not return the details of ops in anonymous subroutines compiled at compile time. For instance, given
$a = sub { ... };
the subroutine will not appear in the hash. This is just as well, since theyre anonymous... If you want to get at them, use...
anon_subs()
This returns an array of hash references. Each element has the keys "start" and "root". These are the starting and root ops of all of the anonymous subroutines in the program.
$op->oldname
Returns the name of the op, even if it is currently optimized to null. This helps you understand the stucture of the op tree.
$op->kids
Returns an array of all this ops non-null children, in order.
$op->first
$op->last
$op->other
Normally if you call first, last or other on anything which is not an UNOP, BINOP or LOGOP respectivly it will die. This leads to lots of code like:
$op->first if $op->can(first);
B::Utils provides every op with first, last and other methods which will simply return nothing if it isnt relevent.
$op->parent
Returns the parent node in the op tree, if possible. Currently "possible" means "if the tree has already been optimized"; that is, if were during a CHECK block. (and hence, if we have valid next pointers.)
In the future, it may be possible to search for the parent before we have the next pointers in place, but itll take me a while to figure out how to do that.
$op->previous
Like $op->next, but not quite.
walkoptree_simple($op, &callback, [$data])
The B module provides various functions to walk the op tree, but theyre all rather difficult to use, requiring you to inject methods into the B::OP class. This is a very simple op tree walker with more expected semantics.
The &callback is called at each op with the op itself passed in as the first argument and any additional $data as the second.
All the walk functions set $B::Utils::file and $B::Utils::line to the appropriate values of file and line number in the program being examined. Since only COPs contain this information it may be unavailable in the first few callback calls.
walkoptree_filtered($op, &filter, &callback, [$data])
This is much the same as walkoptree_simple, but will only call the callback if the filter returns true. The filter is passed the op in question as a parameter; the opgrep function is fantastic for building your own filters.
walkallops_simple(&callback, [$data])
This combines walkoptree_simple with all_roots and anon_subs to examine every op in the program. $B::Utils::sub is set to the subroutine name if youre in a subroutine, __MAIN__ if youre in the main program and __ANON__ if youre in an anonymous subroutine.
walkallops_filtered(&filter, &callback, [$data])
Same as above, but filtered.
<<lessSYNOPSIS
use B::Utils;
These functions make it easier to manipulate the op tree.
FUNCTIONS
all_starts
all_roots
Returns a hash of all of the starting ops or root ops of optrees, keyed to subroutine name; the optree for main program is simply keyed to __MAIN__.
Note: Certain "dangerous" stashes are not scanned for subroutines: the list of such stashes can be found in @B::Utils::bad_stashes. Feel free to examine and/or modify this to suit your needs. The intention is that a simple program which uses no modules other than B and B::Utils would show no addition symbols.
This does not return the details of ops in anonymous subroutines compiled at compile time. For instance, given
$a = sub { ... };
the subroutine will not appear in the hash. This is just as well, since theyre anonymous... If you want to get at them, use...
anon_subs()
This returns an array of hash references. Each element has the keys "start" and "root". These are the starting and root ops of all of the anonymous subroutines in the program.
$op->oldname
Returns the name of the op, even if it is currently optimized to null. This helps you understand the stucture of the op tree.
$op->kids
Returns an array of all this ops non-null children, in order.
$op->first
$op->last
$op->other
Normally if you call first, last or other on anything which is not an UNOP, BINOP or LOGOP respectivly it will die. This leads to lots of code like:
$op->first if $op->can(first);
B::Utils provides every op with first, last and other methods which will simply return nothing if it isnt relevent.
$op->parent
Returns the parent node in the op tree, if possible. Currently "possible" means "if the tree has already been optimized"; that is, if were during a CHECK block. (and hence, if we have valid next pointers.)
In the future, it may be possible to search for the parent before we have the next pointers in place, but itll take me a while to figure out how to do that.
$op->previous
Like $op->next, but not quite.
walkoptree_simple($op, &callback, [$data])
The B module provides various functions to walk the op tree, but theyre all rather difficult to use, requiring you to inject methods into the B::OP class. This is a very simple op tree walker with more expected semantics.
The &callback is called at each op with the op itself passed in as the first argument and any additional $data as the second.
All the walk functions set $B::Utils::file and $B::Utils::line to the appropriate values of file and line number in the program being examined. Since only COPs contain this information it may be unavailable in the first few callback calls.
walkoptree_filtered($op, &filter, &callback, [$data])
This is much the same as walkoptree_simple, but will only call the callback if the filter returns true. The filter is passed the op in question as a parameter; the opgrep function is fantastic for building your own filters.
walkallops_simple(&callback, [$data])
This combines walkoptree_simple with all_roots and anon_subs to examine every op in the program. $B::Utils::sub is set to the subroutine name if youre in a subroutine, __MAIN__ if youre in the main program and __ANON__ if youre in an anonymous subroutine.
walkallops_filtered(&filter, &callback, [$data])
Same as above, but filtered.
Download (0.043MB)
Added: 2006-07-04 License: Perl Artistic License Price:
1207 downloads
B::Lint 1.09
B::Lint module contains Perl lint. more>>
B::Lint module contains Perl lint.
SYNOPSIS
perl -MO=Lint[,OPTIONS] foo.pl
The B::Lint module is equivalent to an extended version of the -w option of perl. It is named after the program lint which carries out a similar process for C programs.
OPTIONS AND LINT CHECKS
Option words are separated by commas (not whitespace) and follow the usual conventions of compiler backend options. Following any options (indicated by a leading -) come lint check arguments. Each such argument (apart from the special all and none options) is a word representing one possible lint check (turning on that check) or is no-foo (turning off that check). Before processing the check arguments, a standard list of checks is turned on. Later options override earlier ones. Available options are:
magic-diamond
Produces a warning whenever the magic readline is used. Internally it uses perls two-argument open which itself treats filenames with special characters specially. This could allow interestingly named files to have unexpected effects when reading.
% touch rm *|
% perl -pe 1
The above creates a file named rm *|. When perl opens it with it actually executes the shell program rm *. This makes dangerous to use carelessly.
context
Produces a warning whenever an array is used in an implicit scalar context. For example, both of the lines
$foo = length(@bar);
$foo = @bar;
will elicit a warning. Using an explicit scalar() silences the warning. For example,
$foo = scalar(@bar);
implicit-read and implicit-write
These options produce a warning whenever an operation implicitly reads or (respectively) writes to one of Perls special variables. For example, implicit-read will warn about these:
/foo/;
and implicit-write will warn about these:
s/foo/bar/;
Both implicit-read and implicit-write warn about this:
for (@a) { ... }
bare-subs
This option warns whenever a bareword is implicitly quoted, but is also the name of a subroutine in the current package. Typical mistakes that it will trap are:
use constant foo => bar;
@a = ( foo => 1 );
$b{foo} = 2;
Neither of these will do what a naive user would expect.
dollar-underscore
This option warns whenever $_ is used either explicitly anywhere or as the implicit argument of a print statement.
private-names
This option warns on each use of any variable, subroutine or method name that lives in a non-current package but begins with an underscore ("_"). Warnings arent issued for the special case of the single character name "_" by itself (e.g. $_ and @_).
undefined-subs
This option warns whenever an undefined subroutine is invoked. This option will only catch explicitly invoked subroutines such as foo() and not indirect invocations such as &$subref() or $obj->meth(). Note that some programs or modules delay definition of subs until runtime by means of the AUTOLOAD mechanism.
regexp-variables
This option warns whenever one of the regexp variables $`, $& or $ is used. Any occurrence of any of these variables in your program can slow your whole program down. See perlre for details.
all
Turn all warnings on.
none
Turn all warnings off.
<<lessSYNOPSIS
perl -MO=Lint[,OPTIONS] foo.pl
The B::Lint module is equivalent to an extended version of the -w option of perl. It is named after the program lint which carries out a similar process for C programs.
OPTIONS AND LINT CHECKS
Option words are separated by commas (not whitespace) and follow the usual conventions of compiler backend options. Following any options (indicated by a leading -) come lint check arguments. Each such argument (apart from the special all and none options) is a word representing one possible lint check (turning on that check) or is no-foo (turning off that check). Before processing the check arguments, a standard list of checks is turned on. Later options override earlier ones. Available options are:
magic-diamond
Produces a warning whenever the magic readline is used. Internally it uses perls two-argument open which itself treats filenames with special characters specially. This could allow interestingly named files to have unexpected effects when reading.
% touch rm *|
% perl -pe 1
The above creates a file named rm *|. When perl opens it with it actually executes the shell program rm *. This makes dangerous to use carelessly.
context
Produces a warning whenever an array is used in an implicit scalar context. For example, both of the lines
$foo = length(@bar);
$foo = @bar;
will elicit a warning. Using an explicit scalar() silences the warning. For example,
$foo = scalar(@bar);
implicit-read and implicit-write
These options produce a warning whenever an operation implicitly reads or (respectively) writes to one of Perls special variables. For example, implicit-read will warn about these:
/foo/;
and implicit-write will warn about these:
s/foo/bar/;
Both implicit-read and implicit-write warn about this:
for (@a) { ... }
bare-subs
This option warns whenever a bareword is implicitly quoted, but is also the name of a subroutine in the current package. Typical mistakes that it will trap are:
use constant foo => bar;
@a = ( foo => 1 );
$b{foo} = 2;
Neither of these will do what a naive user would expect.
dollar-underscore
This option warns whenever $_ is used either explicitly anywhere or as the implicit argument of a print statement.
private-names
This option warns on each use of any variable, subroutine or method name that lives in a non-current package but begins with an underscore ("_"). Warnings arent issued for the special case of the single character name "_" by itself (e.g. $_ and @_).
undefined-subs
This option warns whenever an undefined subroutine is invoked. This option will only catch explicitly invoked subroutines such as foo() and not indirect invocations such as &$subref() or $obj->meth(). Note that some programs or modules delay definition of subs until runtime by means of the AUTOLOAD mechanism.
regexp-variables
This option warns whenever one of the regexp variables $`, $& or $ is used. Any occurrence of any of these variables in your program can slow your whole program down. See perlre for details.
all
Turn all warnings on.
none
Turn all warnings off.
Download (0.017MB)
Added: 2007-06-25 License: Perl Artistic License Price:
852 downloads
libyama 0.4-b
libyama is a malloc implementation that bundles leak tracking by auditing allocations. more>>
libyama is a malloc implementation that bundles leak tracking by auditing allocations, array bound write detection, detection of access to freed memory, free/realloc on invalid pointers. It grew out of an attempt to build array bound overwrite detection into LeakTrac, a leak tracker I wrote earlier.
Since LeakTrac performed only book keeping and not any allocation, it was not possible to make LeakTrac detect array bound write, hence an allocator that does; and also tracks leaks.
You can think of it as merging LeakTrac and code that was inspired by ElectricFence.
If you only want to track leaks, then LeakTrac is just what you need. If you want an allocator that lets you debug also, then YaMa is the one for you. Sure, there are other similar things on the block - which is why this is Yet another Memory allocator.
Main features:
- provides malloc, calloc, realloc and free
- tracks and reports leaks
- detects accesses beyond allocated memory
- detects accesses to freed memory
- detects free on non-malloced pointers, NULL pointers
- detects realloc on non-malloced pointers
Installation:
Currently YaMa is written for Linux x86. Youll need a kernel that provides mmap etc, and gcc that can build ELF shared libraries. You also need to install binutils, if you havent already (very unlikely) And youll need the /proc filesystem.
To install YaMa
Unpack the archive
Edit Makefile; the only things you need to change are INSTALLDIR and BT.
make lib to make
make install to install. Youll need write permission on INSTALLDIR.
You may need to run ldconfig
Usage:
YaMa contains libyama.so, a shared library installed into INSTALLDIR by make install. The library provides malloc, calloc, realloc and free which can be used as replacements to their libc implementations.
A program can be linked against libyama on the command line (-lyama). A more interesting way to use libyama would be to preload it using LD_PRELOAD. The command line
LD_PRELOAD=libyama.so
would cause all calls to malloc, calloc, realloc and free originating from the program being run to be handled by the YaMa implementation. If libyama.so doesnt show up on ldconfig -p or it is not on your LD_LIBRARY_PATH, you need to specify the full path length.
When the program errs by accessing memory across an array bound, i.e, beyond the memory allocated using malloc/calloc/realloc, it receives a SIGSEGV. An access to freed memory also results in a SIGSEGV. If youve compiled your program using -g, you can locate the offending statement using any debugger on the core file. Note that overwrites on statically allocated arrays are not detected by YaMa.
If the program peforms an invalid free or realloc, an "Alert!" message is written to stderr, along with the call chain till the free/realloc. The call fails.
Upon normal program termination, either thro exit or return from main, a summary of leaks is printed on stderr. The size of each chunk of memory that remains un-freed at the end of the program is reported, along with the call chain till the allocation.
The behaviour of YaMa on malloc (0) (or calloc (x, 0)) is controlled by the environment variable ALLOWMALLOCZERO. If this variable is set to values = 2, YaMa returns a valid pointer and no warning is printed. Writes to this pointer, too, will fail. If ALLOWMALLOCZERO is not set, the behaviour is identical to ALLOWMALLOCZERO = 0.
Enhancements:
- Fixed a bug in the stack backtrace code which would crash libyama. Compile time control of backtracing (Ive found it useful at times not to have tracing).
<<lessSince LeakTrac performed only book keeping and not any allocation, it was not possible to make LeakTrac detect array bound write, hence an allocator that does; and also tracks leaks.
You can think of it as merging LeakTrac and code that was inspired by ElectricFence.
If you only want to track leaks, then LeakTrac is just what you need. If you want an allocator that lets you debug also, then YaMa is the one for you. Sure, there are other similar things on the block - which is why this is Yet another Memory allocator.
Main features:
- provides malloc, calloc, realloc and free
- tracks and reports leaks
- detects accesses beyond allocated memory
- detects accesses to freed memory
- detects free on non-malloced pointers, NULL pointers
- detects realloc on non-malloced pointers
Installation:
Currently YaMa is written for Linux x86. Youll need a kernel that provides mmap etc, and gcc that can build ELF shared libraries. You also need to install binutils, if you havent already (very unlikely) And youll need the /proc filesystem.
To install YaMa
Unpack the archive
Edit Makefile; the only things you need to change are INSTALLDIR and BT.
make lib to make
make install to install. Youll need write permission on INSTALLDIR.
You may need to run ldconfig
Usage:
YaMa contains libyama.so, a shared library installed into INSTALLDIR by make install. The library provides malloc, calloc, realloc and free which can be used as replacements to their libc implementations.
A program can be linked against libyama on the command line (-lyama). A more interesting way to use libyama would be to preload it using LD_PRELOAD. The command line
LD_PRELOAD=libyama.so
would cause all calls to malloc, calloc, realloc and free originating from the program being run to be handled by the YaMa implementation. If libyama.so doesnt show up on ldconfig -p or it is not on your LD_LIBRARY_PATH, you need to specify the full path length.
When the program errs by accessing memory across an array bound, i.e, beyond the memory allocated using malloc/calloc/realloc, it receives a SIGSEGV. An access to freed memory also results in a SIGSEGV. If youve compiled your program using -g, you can locate the offending statement using any debugger on the core file. Note that overwrites on statically allocated arrays are not detected by YaMa.
If the program peforms an invalid free or realloc, an "Alert!" message is written to stderr, along with the call chain till the free/realloc. The call fails.
Upon normal program termination, either thro exit or return from main, a summary of leaks is printed on stderr. The size of each chunk of memory that remains un-freed at the end of the program is reported, along with the call chain till the allocation.
The behaviour of YaMa on malloc (0) (or calloc (x, 0)) is controlled by the environment variable ALLOWMALLOCZERO. If this variable is set to values = 2, YaMa returns a valid pointer and no warning is printed. Writes to this pointer, too, will fail. If ALLOWMALLOCZERO is not set, the behaviour is identical to ALLOWMALLOCZERO = 0.
Enhancements:
- Fixed a bug in the stack backtrace code which would crash libyama. Compile time control of backtracing (Ive found it useful at times not to have tracing).
Download (0.012MB)
Added: 2006-03-17 License: Freely Distributable Price:
1318 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above b search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed