Browse files

add wiki pages on ways to contribute to musl

  • Loading branch information...
Rich Felker
Rich Felker committed Mar 1, 2018
1 parent f546b9d commit 9967b71ed66f906508c6bb08302119c556acc5bb
Showing with 88 additions and 0 deletions.
  1. +11 −0
  2. +6 −0
  3. +14 −0
  4. +57 −0
@@ -0,0 +1,11 @@
# Funding Maintenance and Development
musl has a [Patreon]( to fund maintenance
and development by the main project author, Rich Felker.
Other code contribitors have also performed porting and implementation
of new functionality by contract. If there is functionality you need
and want to fund that is or might be in the scope of the project, or
that could be met with a side project (for an example, see
[musl-nscd](, please get in touch.
@@ -22,6 +22,12 @@ static linking support, and clean code.
- [Functional differences from glibc]
- [Guidelines for Distributions]
# Contributing
- [Reporting bugs]
- [Writing tests]
- [Funding maintenance and development][Funding]
# Development
- [Open issues]
@@ -0,0 +1,14 @@
# Reporting Bugs
Bug reports should be sent to the musl mailing list,
``. You do not need to be subscribed to post to
the list, but posts from non-subscribers may experience short delays
pending moderation. If you want to subscribe, visit the [Openwall
lists page]( If you are not subscribed
and want to be Cc'd on replies, please mention that in your post.
Please include in your bug report information about how you're using
musl (as part of a musl-based distro, with the `musl-gcc` wrapper,
using a cross toolchain, etc.) and any information that could be
helpful in identifying or reproducing the bug.
@@ -0,0 +1,57 @@
# Writing Tests
Improving test coverage is one of the most valuable contributions you
can make to musl. Insufficient testing makes it hard to ensure that
new ports are correct, and hard to overhaul existing code.
The official test suite for musl is the libc-agnostic `libc-test`
repository, available at [].
## Tests needed
The following is an incomplete list of missing test coverage that
would be nice to have:
- `strftime` - Basic functional tests for all format specifiers,
corner case values.
- `iconv` - Round trips to/from all supported character encodings.
- DNS stub resolver - User+mount+network namespace based tests to hook
the resolver up to a fake nameserver listening on localhost:53.
Should test malformed response packets (particularly forms that
triggered bugs in the past), well-formed corner cases,
- Unicode properties - Verify that the properties reported by
`wcwidth` and the `wctype.h` `isw*` functions, and the case mappings
performed by `towupper`/`towlower`, are consistent/reasonable with
particular Unicode versions.
- UTF-8/16/32 encoders/decoders - Multibyte, `char16_t`, and
`char32_t` functions accept and correctly convert all valid inputs,
reject all invalid ones.
- `fmemopen`, `open_memstream`, and `open_wmemstream` - Line-by-line
tests for the properties the POSIX spec requires. The musl
implementations of these are all likely to have subtle conformance
- Arch bits & sycall conventions - Simple checks using all of the
user/kernel boundary structures and syscalls that vary per arch
(`stat`, etc.) to see that both sides are interpreting the data
- Environment manipulation functions - Various well-defined
combinations of editing the environment via `environ[]`, `putenv`,
`setenv`, and `unsetenv`, checking consistency of the results.
- `setjmp`/`longjmp`/`sigsetjmp`/`siglongjmp` - Use under conditions
that are expected to have most/all registers in use and, for the
`sig*` versions, where the correctness of signal mask
saving/restoration is visible. Also that `fenv` is *not* restored by
`longjmp`/`siglongjmp` (a common bug).
- `gettext` - Basic lookup functionality, domain binding, plural
rules. Existing musl-specific `__pleval` tests could be reformulated
as libc-agnostic using `.mo` files containing the plural rules.

0 comments on commit 9967b71

Please sign in to comment.