darklua 0.16.0

Transform Lua scripts
Documentation
fn parse_code(c: &mut criterion::Criterion) {
    let inputs = [
        (
            "Roact - Component.lua",
            include_str!("../bench_content/roact/src/Component.lua"),
        ),
        (
            "Roact - assign.lua",
            include_str!("../bench_content/roact/src/assign.lua"),
        ),
        (
            "React - ReactFiberWorkLoop.new.lua",
            include_str!("../bench_content/core-packages/modules/ReactReconciler-9c8468d8-8a7220fd/src/ReactFiberWorkLoop.new.lua"),
        ),
        (
            "React - ReactFiberCommitWork.new.lua",
            include_str!("../bench_content/core-packages/modules/ReactReconciler-9c8468d8-8a7220fd/src/ReactFiberCommitWork.new.lua"),
        ),
        (
            "React - ReactFiberHooks.new.lua",
            include_str!("../bench_content/core-packages/modules/ReactReconciler-9c8468d8-8a7220fd/src/ReactFiberHooks.new.lua"),
        ),
        (
            "React - ReactFiberBeginWork.new.lua",
            include_str!("../bench_content/core-packages/modules/ReactReconciler-9c8468d8-8a7220fd/src/ReactFiberBeginWork.new.lua"),
        ),
    ];

    #[cfg(feature = "tracing")]
    tracing::subscriber::set_global_default(
        tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt::with(
            tracing_subscriber::registry(),
            tracing_tracy::TracyLayer::new(),
        ),
    )
    .expect("set up the subscriber");

    for (name, content) in inputs {
        let mut group = c.benchmark_group(name);
        group.throughput(criterion::Throughput::Bytes(content.as_bytes().len() as u64));

        let parser = darklua_core::Parser::default();
        group.bench_function("parse-without-tokens", |b| {
            b.iter(|| {
                parser.parse(criterion::black_box(content)).unwrap();
            })
        });

        let retain_line_parser = darklua_core::Parser::default().preserve_tokens();
        group.bench_function("parse-with-tokens", |b| {
            b.iter(|| {
                retain_line_parser
                    .parse(criterion::black_box(content))
                    .unwrap();
            })
        });

        group.finish();
    }
}

criterion::criterion_group!(
    name = parse;
    config = criterion::Criterion::default();
    targets = parse_code,
);
criterion::criterion_main!(parse);