Issue #15074 has been updated by v0dro (Sameer Deshmukh).


Alright. So as a first step can you please tell me how it would be possible to create
this page for the C API? Or maybe start with the wiki?

I can send a PR with some preliminary docs once you approve a course of action.

----------------------------------------
Feature #15074: Create 'official' C API documentation on ruby-doc.org
https://bugs.ruby-lang.org/issues/15074#change-73941

* Author: v0dro (Sameer Deshmukh)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
Currently working with Ruby C API is basically reading a bunch of random
blogs and coming up with a solution based on inputs from various sources
(some of which can be out of date).

The only relevant resource for C API docs with practical examples for each API is 
currently is this website: https://silverhammermba.github.io/emberb/

However the author is sometimes unresponsive and the documentation on some APIs
is missing.

The extension.rdoc file in the ruby repo is not complete either.
There is almost no mention of various critical functions for things like string
encoding and hashes.

Therefore, I propose we maintain a full C API documentation divided into meaningful
sections and host this complete and 'official' documentation on ruby-doc.org website
such that it is directly picked up from the Ruby repo (the same way the current docs for
the Ruby core library are). We should at least aim to make it as complete and comprehensive
as the Python C API docs: https://docs.python.org/3/c-api/index.html

The other benefit of maintaining it this way is that users can easily see changes across
Ruby versions. Having good documentation for C APIs is critical for creating fast and
efficient scientific computing libraries for Ruby.

The C API docs can subdivided into the following sections. Please feel free to add to the list:

* Introduction
  - Include files
  - Interfacing extensions with Ruby gems using mkmf.
* Garbage Collection
* Basic Ruby functionality
  - Creating classes, constants, instance variables etc.
  - Method calls and constant lookup.
* Global Interpreter Lock
* Interfacing C structs with Ruby
* Interfaces to Ruby core classes
  - String
    - String encodings
  - Hash
  - Float
  - Integer
  - Symbol





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>