cxreg/zavolaj
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Zavolaj! This project prototypes native calling interface functionality for Rakudo. It should give Rakudo the ability to call out to C libraries without having to drop to writing PIR). The Parrot Native Call Interface gives a similar facility in PIR. The project name is the Slovak translation of the imperative "call!", to complement Blizkost, a Rakudo-to-Perl-5 integration project. The functions that Zavolaj can currently call must have signatures (the type of the return value and the types of the arguments) that already exist in a fixed list inside Parrot. Adding more signatures currently involves adding entries to the parrot/src/nci/extra_thunks.nci file. There is a project to enable calling all possible function signatures: http://github.com/plobsing/parrot-libjit-fb is currently a Parrot extension. Zavolaj does not use it yet. MySQL Initially the MySQL client library is being used as a test case, because it is a popular application, is frequently asked about, and because Parrot does have all the function signatures. There is a Rakudo project http://github.com/mberends/fakedbi that wraps these functions with a DBI compatible interface. The /usr/include/mysql.h file defines the mysql client library functions and their parameters. Prepare your system along these lines before trying out the examples: $ mysql -u root -p CREATE DATABASE zavolaj; CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'testpass'; GRANT CREATE ON zavolaj.* TO 'testuser'@'localhost'; GRANT DROP ON zavolaj.* TO 'testuser'@'localhost'; GRANT INSERT ON zavolaj.* TO 'testuser'@'localhost'; GRANT DELETET ON zavolaj.* TO 'testuser'@'localhost'; GRANT SELECT ON zavolaj.* TO 'testuser'@'localhost'; GRANT LOCK TABLES ON zavolaj.* TO 'testuser'@'localhost'; GRANT SELECT ON mysql.* TO 'testuser'@'localhost'; # or maybe otherwise GRANT ALL PRIVILEGES ON zavolaj.* TO 'testuser'@'localhost'; You can look at the results via a normal mysql connection: $ mysql -utestuser -ptestpass USE zavolaj; SHOW TABLES; SELECT * FROM nom; SQLite3 This library cannot be called yet because of missing Parrot NCI signatures, see the example file for details. Microsoft Windows The win32-api-call.p6 script shows the beginning of a GUI application written in Perl 6. Testing Before running 'make test', you *must* perform this: sudo apt-get install libmysqlclient-dev sudo apt-get install libtest-harness-perl export PERL6LIB=lib
About
Prototype of the native call interface for Rakudo
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Other 100.0%